1.创建并初始化
创建UITextView的文件,并在.h文件中写入如下代码:
- #import <UIKit/UIKit.h>
- @interface TextViewController : UIViewController <UITextViewDelegate>
- {
- UITextView *textView;
- }
- @property (nonatomic, retain) UITextView *textView;
- @end
在.m文件中初始化这个textview,写入代码如下:
- self.textView = [[[UITextView alloc] initWithFrame:self.view.frame]autorelease]; //初始化大小并自动释放
- self.textView.textColor = [UIColor blackColor];//设置textview里面的字体颜色
- self.textView.font = [UIFont fontWithName:@"Arial" size:18.0];//设置字体名字和字体大小
- self.textView.delegate = self;//设置它的委托方法
- self.textView.backgroundColor = [UIColor whiteColor];//设置它的背景颜色
- self.textView.text = @"Now is the time for all good developers tocome to serve their country.\n\nNow is the time for all good developers to cometo serve their country.";//设置它显示的内容
- self.textView.returnKeyType = UIReturnKeyDefault;//返回键的类型
- self.textView.keyboardType = UIKeyboardTypeDefault;//键盘类型
- self.textView.scrollEnabled = YES;//是否可以拖动
- self.textView.autoresizingMask = UIViewAutoresizingFlexibleHeight;//自适应高度
- [self.view addSubview: self.textView];//加入到整个页面中
2. UITextView退出键盘的几种方式
因为你点击UITextView会出现键盘,如果你退出键盘,有如下几种方式:
(1)如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。代码如下:
- - (void)textViewDidBeginEditing:(UITextView *)textView {
- UIBarButtonItem *done = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(leaveEditMode)] autorelease];
- self.navigationItem.rightBarButtonItem = done;
- }
- - (void)textViewDidEndEditing:(UITextView *)textView {
- self.navigationItem.rightBarButtonItem = nil;
- }
- - (void)leaveEditMode {
- [self.textView resignFirstResponder];
- }
(2)如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键。代码如下:
- #pragma mark - UITextView Delegate Methods
- -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
- {
- if ([text isEqualToString:@"\n"]) {
- [textView resignFirstResponder];
- return NO;
- }
- return YES;
- }
这样无论你是使用电脑键盘上的回车键还是使用弹出键盘里的return键都可以达到退出键盘的效果。
(3)还有你也可以自定义其他加载键盘上面用来退出,比如在弹出的键盘上面加一个view来放置退出键盘的Done按钮。
代码如下:
- UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
- [topView setBarStyle:UIBarStyleBlack];
- UIBarButtonItem * helloButton = [[UIBarButtonItem alloc]initWithTitle:@"Hello" style:UIBarButtonItemStyleBordered target:self action:nil];
- UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
- UIBarButtonItem * doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];
- NSArray * buttonsArray = [NSArray arrayWithObjects:helloButton,btnSpace,doneButton,nil];
- [doneButton release];
- [btnSpace release];
- [helloButton release];
- [topView setItems:buttonsArray];
- [tvTextView setInputAccessoryView:topView];
- -(IBAction)dismissKeyBoard
- {
- [tvTextView resignFirstResponder];
- }
(4)设置UITextView圆角问题
做法是在 #import QuartzCore/QuartzCore.h 后,便能調用[textView.layer setCornerRadius:10]; 來把 UITextView 设定圓角
(5)UITextView根据文本大小自适应高度
通过实现文本字数来确定高度,如下:
- NSString * desc = @"Description it is a test font, and don't become angry for which i use to do here.Now here is a very nice party from american or not!";
- CGSize size = [desc sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(240, 2000) lineBreakMode:UILineBreakModeWordWrap];
只有UILabel需要定义的numberoflines为0,即不做行数的限制。如下:
- [label setNumberOfLines:0];
- [label setFrame:CGRectMake(40, 135, 240, size.height+10)];
- [label setText:desc];
(6)UITextView自定选择文字后的菜单
在ViewDidLoad中加入:
- UIMenuItem *menuItem = [[UIMenuItem alloc]initWithTitle:@"分享到新浪微博" action:@selector(changeColor:)];
- UIMenuController *menu = [UIMenuController sharedMenuController];
- [menu setMenuItems:[NSArray arrayWithObject:menuItem]];
- [menuItem release];
当然上面那个@selector里面的changeColor方法还是自己写吧,也就是说点击了我们自定义的菜单项后会触发的方法。
然后还得在代码里加上一个方法:
- -(BOOL)canPerformAction:(SEL)action withSender:(id)sender
- {
- if(action ==@selector(changeColor:))
- {
- if(textView.selectedRange.length>0)
- return YES;
- }
- return NO;
- }
实现后如下图:
1、设置tableview返回时取消选中状态
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableview deselectRowAtIndexPath:self.tableview.indexPathForSelectedRow animated:YES];
}
2、设置UIPickerView默认选中
[pickerView selectRow:5 inComponent:0 animated:NO];
3、设置应用电池栏颜色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
4、检测网络连接状态 (添加SystemConfiguration.framework 和Reachability.h 和Reachability.m)
if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) &&
([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable)) {
NSLog(@"无网络连接");
}
5、图片缩放
UIImage *image = [[UIImage alloc] initWithData:self.activeDownload];
if (image.size.width != kAppIconHeight && image.size.height != kAppIconHeight)
{
CGSize itemSize = CGSizeMake(kAppIconHeight, kAppIconHeight);
UIGraphicsBeginImageContext(itemSize);
CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
[image drawInRect:imageRect];
self.appRecord.appIcon = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
else
{
self.appRecord.appIcon = image;
}
6、设置UIWenview背景透明的方法
webview.backgroundColor = [UIColor clearColor];
webview.opaque = NO;
在 网页里设置:
<body style="background-color: transparent">
7、js控制UIWebvie
js里:
<script>
function jump()
{
var clicked=true;
window.location="/clicked"; //改变URL 注意:要使用"/"分隔符
alert("js alert :jump");
}
</script>
oc里:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//获取URL并且做比较,判断是否触发了JS事件,注意有"/"
if ([request.mainDocumentURL.relativePath isEqualToString:@"/clicked"]) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"you click me" message:@"clicked" delegate:nilcancelButtonTitle:@"sure" otherButtonTitles:@"cancel", nil];
[alertView show];
[alertView release];
return false;
}
return true;
}
8、UIWebview加载本地html
- NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
- [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
UIWebView类没有修改缩放系数的方法,我们只能用HTML代码来做。Meta标签可以设置viewport,而viewport就包含了初始化缩放系数的参数。
META标签如下所示:
<meta name="viewport"content="minimum-scale=0.6; maximum-scale=5; initial-scale=1; user-scalable=yes; width=640">
可以使用的参数有:
- minimum-scale:
允许缩放的最小倍数。默认为0.25,允许值为0-10。 - maximum-scale:
运行缩放的最大倍数。默认1.6,允许值为0-10。 - initial-scale:
当web页被加载,还未被用户缩放之前默认的缩放系数。默认值是自动根据页面大小和可用区域计算出来的,但这个值最终会在最小倍数到最大倍数之间。 - user-scalable
是否运行用户缩放该web页。 - width:
viewpoint的宽。默认为980像素(iPhone)。允许值为200-10000 。”device-width”表示设备宽度(iPhone为320,iPad为768)。注意device width不等于用户界面的宽度。设备宽度总是设备处于人像模式下的宽度(屏幕方向为正向)。如果我们想增加web页的最大缩放系数(默认1.6),我们只需要在HTML代码中增加META标签,指定maximum-scale属性即可。你可以直接在HTML源代码中加入META标签。如果web页来自internet并且无法修改HTML源代码,你可以用Javascript代码创建META标签并附加到web页的HTML代码中。读完剩下的内容,你就知道怎么做了。 - height:
viewport的高。通常是根据width计算的。
- (void)applicationWillResignActive:(UIApplication *)application
11、NSData 与NSString 互转
NSData* xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding];
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
12、图片转圆角
效果图
首先导入头文件:#import <QuartzCore/QuartzCore.h>
UIImageView * headerImage = [[UIImageView alloc] initWithFrame:CGRectMake(10.0, 10.0, 64.0, 64.0)];
headerImage.image = contactPhoto;
CALayer * layer = [headerImage layer];
[layer setMasksToBounds:YES];
[layer setCornerRadius:10.0];
[layer setBorderWidth:1.0];
[layer setBorderColor:[[UIColor blackColor] CGColor]];
[contactHeader addSubview:headerImage];
13、將图片保存到相册的代码
UIImageWriteToSavedPhotosAlbum(Uiimage, nil, nil, nil);
14、去掉tableview 的线
[self.tableview setSeparatorStyle:UITableViewCellSeparatorStyleNone];
15、UILable文字加阴影
titleText.shadowColor = [UIColor blackColor];
titleText.shadowOffset = CGSizeMake(0, -1.0);
16、plist文件转NSDictionary
NSBundle *bundle = [NSBundle mainBundle];
//取得文件路径
NSString *plistPath = [bundle pathForResource:@"cityData" ofType:@"plist"];
//读取到一个NSDictionary
cityDictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
17、隐藏tabbar
- (void) hideTabBar:(BOOL) hidden {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0];
for(UIView *view in self.tabBarController.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
if (hidden) {
[view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x, 480-49, view.frame.size.width, view.frame.size.height)];
}
}
else
{
if (hidden) {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480-49)];
}
}
}
[UIView commitAnimations];
}