1、常用代码整理: Xcode6,引入viewController代码: 1. 在Appdelegate先引入ViewController头文件 2. ViewController vc =(ViewController alloc)init; Self.window.rootViewController = vc; 然后vc就代表ViewController对象,就可以调用其属性和方法了。 一般用通知来取代上面的写法: //发送通知 [[[[NSNotificationCenter defaultCenter]] postNotificationName:通知名object:
2、nil]; //接受通知 //IB创建的对象调用initWithCoder要复写方法; -(instancetype) initWithCoder(NSCoder*)coder{ self = [super initWithCoder:coder]; if(self){ [[ NSNotificationCenter defaultCenter]addObserver:self selector:@selector(method)name:@”….”object:nil ]; } return self; } UILabel 多行文字自动换行 (自动折行) UIVi
3、ew *footerView = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 300, 180)]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; label.text = @"where are you? where are you? where are you? where are you? where are you? where are you? where are you? where are you
4、 where are you? where are you?"; //清空背景颜色 label.backgroundColor = [UIColor clearColor]; //设置字体颜色为白色 label.textColor = [UIColor whiteColor]; //文字居中显示 label.textAlignment = UITextAlignmentCenter; //自动折行设置 label.lineBreakMode = UILineBreakModeWordWrap; label.numberO
5、fLines = 0; iOS的UILabel设置居上对齐,居中对齐,居下对齐 在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,博主参考国外网站,从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐。具体如下: typedef enum { VerticalAlignmentTop = 0, // default VerticalAlignmentMiddle, VerticalAlignmentBottom, } VerticalAlignment; @interface myUILabel :
6、UILabel { @private VerticalAlignment _verticalAlignment; } @property (nonatomic) VerticalAlignment verticalAlignment; @end @implementation myUILabel @synthesize verticalAlignment = verticalAlignment_; - (id)initWithFrame:(CGRect)frame { if (self = [super i
7、nitWithFrame:frame]) { self.verticalAlignment = VerticalAlignmentMiddle; } return self; } - (void)setVerticalAlignment:(VerticalAlignment)verticalAlignment { verticalAlignment_ = verticalAlignment; [self setNeedsDisplay]; } - (CGRect)textRec
8、tForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines { 1. CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines]; 2. switch (self.verticalAlignment) { case VerticalAlignmentTop: textRect.origin.y = bounds.o
9、rigin.y; break; case VerticalAlignmentBottom: textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height; break; case VerticalAlignmentMiddle: // Fall through. default: te
10、xtRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0; } return textRect; } -(void)drawTextInRect:(CGRect)requestedRect { CGRect actualRect = [self textRectForBounds:requestedRect limitedToNumberOfLines:self.numberOfLines]; [super
11、 drawTextInRect:actualRect]; } @end lbl_mylabel = [[myUILabel alloc] initWithFrame:CGRectMake(20, 50, 150, 600)]; UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"halfTransparent.png"]];//使用半透明图片作为label的背景色 lbl_mylabel.backgroundColor = color; lbl_mylabel.tex
12、tAlignment = UITextAlignmentLeft; lbl_mylabel.textColor = UIColor.whiteColor; lbl_mylabel.lineBreakMode = UILineBreakModeWordWrap; lbl_mylabel.numberOfLines = 0; [lbl_mylabel setVerticalAlignment:VerticalAlignmentTop]; [self addSubview:lbl_mylabel]; ios UILabel 变量名不能为title -[UILabe
13、l copyWithZone:]: unrecognized selector sent to instance 遇到了这样一个错误,找了半天没找到是什么错误,于是,Google搜索,打开第一个链接 UILabel 设置过长文本中间为省略号 label.lineBreakMode = NSLineBreakByTruncatingMiddle; 参考:iOS组件之UILabel iOS UILabel详解 ·UILable是iPhone界面最基本的控件,主要用来显示文本信息。 ·常用属性和方法有: 1、创建 CGRect rect = CGRect
14、Make(100, 200, 50, 50); UILabel *label = [[UILabel alloc] initWithFrame:rect]; 2、text //设置和读取文本内容,默认为nil label.text = @”文本信息”; //设置内容 NSLog(@”%@”, label.text); //读取内容 3、textColor //设置文字颜色,默认为黑色 lable.textColor = [UIColor redColor]; 4、font //设置字体大小,默认17 label.font = [UIFont systemFontOfSize:2
15、0]; //⼀一般方法 label.font = [UIFont boldSystemFontOfSize:20]; //加粗方法 label.font = [UIFont fontWithName:@"Arial" size:16]; //指定 字体的方法 //还有⼀一种从外部导入字体的方法。 5、textAlignment //设置标签文本对齐方式。 label.textAlignment = NSTextAlignmentCenter; //还有 NSTextAlignmentLeft、 NSTextAlignmentRight. 6、numberOfLines //标签
16、最多显示行数,如果为0则表示多行。 label.numberOfLines = 2; 7、enabled //只是决定了Label的绘制方式,将它设置 为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的。 label.enable = NO; 8、highlighted //是否高亮显示 label.highlighted = YES; label.highlightedTextColor = [UIColor orangeColor]; //高亮 显示时的文本颜色 9、ShadowColor //设置阴影颜色 [label setShadowColor:[
17、UIColor blackColor]]; 10、ShadowOffset //设置阴影偏移量 [label setShadowOffset:CGSizeMake(-1, -1)]; 11、baselineAdjustment //如果adjustsFontSizeToFitWidth属性设 置为YES,这个属性就来控制文本基线的行为。 label.baselineAdjustment = UIBaselineAdjustmentNone; UIBaselineAdjustmentAlignBaselines = 0,默认,文本最上端与中线对齐。 UIBaselineAdjust
18、mentAlignCenters, 文本中线与label中线对齐。 UIBaselineAdjustmentNone, 文本最低端与label中线对齐。 12、Autoshrink //是否自动收缩 Fixed Font Size 默认,如果Label宽度小于文字长度时时,文字大小不自动缩放 minimumScaleFactor 设置最小收缩比例,如果Label宽度小于文字长度时,文字 进行收缩,收缩超过比例后,停止收缩。 minimumFontSize 设置最小收缩字号,如果Label宽度小于文字长度时,文字字号 减小,低于设定字号后,不再减小。//6.0以后不再使用了。
19、label.minimumScaleFactor = 0.5; 13、adjustsLetterSpacingToFitWidth //改变字母之间的间距来适应Label大小 myLabel.adjustsLetterSpacingToFitWidth = NO; 14、 lineBreakMode //设置文字过长时的显示格式 label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显 示,后面部分省略不显示。 label.lineBreakMode = NSLineBreakByClipping;
20、剪切与文本宽度相同的内 容长度,后半部分被删除。 label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字 以……方式省略,显示尾部文字内容。 label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容 以……方式省略,显示头尾的文字内容。 label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容 以……方式省略,显示头的文字内容。 label.lineBreakMode = NSLineBreakByWord
21、Wrapping;以单词为显示单位显 示,后面部分省略不显示。 15、 adjustsFontSizeToFitWidth //设置字体大小适应label宽度 label.adjustsFontSizeToFitWidth = YES; 16、attributedText:设置标签属性文本。 NSString *text = @"first"; NSMutableAttributedString *textLabelStr = [[NSMutableAttributedString alloc] initWithString:text]; [textLabelStr s
22、etAttributes:@{NSForegroundColorAttributeName : [UIColor lightGrayColor], NSFontAttributeName : [UIFont systemFontOfSize:17]} range:NSMakeRange(11, 10)]; label.attributedText = textLabelStr; 17、竖排文字显示每个文字加一个换行符,这是最方便和简单的实现方式。 label.text = @"请\n竖\n直\n方\n向\n排\n列"; label.numberOfLines = [label.t
23、ext length]; 18、计算UIlabel 随字体多行后的高度 CGRect bounds = CGRectMake(0, 0, 200, 300); heightLabel = [myLabel textRectForBounds:bounds limitedToNumberOfLines:20]; //计算20行后的Label的Frame NSLog(@"%f",heightLabel.size.height); 19、UILabel根据字数多少自动实现适应高度 UILabel *msgLabel = [[UILabel alloc] initWithFra
24、me:CGRectMake(15, 45, 0, 0)]; msgLabel.backgroundColor = [UIColor lightTextColor]; [msgLabel setNumberOfLines:0]; msgLabel.lineBreakMode = UILineBreakModeWordWrap; msgLabel.font = [UIFont fontWithName:@"Arial" size:12]; CGSize size = CGSizeMake(290, 1000); msgLabel.text = @"获取到的deviceToken,我们可
25、以通过webservice服务提 交给.net应用程序,这里我简单处理,直接打印出来,拷贝到.net应用环境中使 用。"; CGSize msgSie = [msgLabel.text sizeWithFont:fonts constrainedToSize:size]; [msgLabel setFrame:CGRectMake(15, 45, 290, msgSie.height)]; 20、渐变字体Label UIColor *titleColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn
26、png"]]; NSString *title = @"Setting"; UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 80, 44)]; titleLabel.textColor = titleColor; titleLabel.text = title; titleLabel.font = [UIFont boldSystemFontOfSize:20]; titleLabel.backgroundColor = [UIColor clearColor]; [self.view
27、 addSubview:titleLabel]; [titleLabel release]; 21、Label添加边框 titleLabel.layer.borderColor = [[UIColor grayColor] CGColor]; titleLabel.layer.borderWidth = 2; UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];//初始化button,选择button类型 btn.frame = CGRectMake(30, 360, 90, 35);//大小和
28、位置 [btn setTitle:@"ZoomIn" forState:UIControlStateNormal];//正常状况下button显示的标题 [btn setTitle:@"ZoomIn" forState:UIControlStateHighlighted];//高亮显示时button的标题 [btn addTarget:self action:@selector(zoomInAction:) forControlEvents:UIControlEventTouchUpInside];//button被按下又抬起后发生的事件 //@selector可以理解为"
29、选择子",selector是一个指针变量,类似于sender。 这里是将method的方法指定给新建的这个btn。 /*在 method 方法里可以将 sender 看作是 btn 了 比如设置btn的hidden属性等等 btn.hidden = YES; 这样btn被隐藏了 /* // 通过背景图片设置按钮高亮 IImage *normalImage = [UIImage imageNamed:@"NormalBlueButton.png"]; UIImage *highlightedImage = [UIImage imageNamed:@"Highlighte
30、dBlueButton"]; self.myButton = [UIButton buttonWithType:UIButtonTypeCustom]; self.myButton.frame = CGRectMake(110.0f,200.0f,100.0f, 37.0f); [self.myButton setBackgroundImage:normalImage forState:UIControlStateNormal]; [self.myButton setBackgroundImage:highlightedImage forState:
31、UIControlStateHighlighted]; [self.myButton setTitle:@"Normal" forState:UIControlStateNormal]; [self.myButton setTitle:@"Pressed" forState:UIControlStateHighlighted]; 1.手写UIButton CGRect btnControlRect=CGRectMake(200, theHeight, 100, 30); UIButton *btnControl=[[UIButton alloc] initWi
32、thFrame:btnControlRect]; // 设置按钮的背景图片 [btnControl setBackgroundImage:[UIImage imageNamed:@"desc_nomal.png"] forState:UIControlStateNormal]; [btnControl setBackgroundImage:[UIImage imageNamed:@"desc_nomal.png"] forState:UIControlStateHighlighted]; [btnControl setBackgroundImag
33、e:[UIImage imageNamed:@"desc_nomal.png"] forState:UIControlStateSelected]; [btnControl setBackgroundColor:[UIColor clearColor]]; [btnControl addTarget:self action:@selector(ClickControlAction:) forControlEvents:UIControlEventTouchUpInside]; [self.scrollView addSubview:btnC
34、ontrol]; [btnControl release]; // 设置按钮的文本 [_btnOrder setTitle:@"预定" forState:UIControlStateNormal]; [_btnOrder setTitle:@"取消" forState:UIControlStateSelected]; // 设置按钮的文本颜色 [_btnOrder setTitleColor:[UIColor colorWithRed:50/255.0 green:50/255.0 blue:50/255.
35、0alpha:1.0] forState:UIControlStateNormal]; [_btnOrder setTitleColor:[UIColor colorWithRed:255/255.0 green:255/255.0blue:255/255.0 alpha:1.0] forState:UIControlStateSelected]; // 设置按钮的文本大小 [_btnOrder.titleLabel setFont:[UIFont systemFontOfSize:14]]; UITextField的总结 1.UITextField
36、的初始化和设置 textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)]; [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型 textField.placeholder = @"password"; //默认显示的字 textField.secureTextEntry = YES; //密码 textField.autocorrectionTy
37、pe = UITextAutocorrectionTypeNo; textField.autocapitalizationType = UITextAutocapitalizationTypeNone; textField.returnKeyType = UIReturnKeyDone; textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X textField.delegate = self; 2.要实现的Delegate方法,关闭键盘 - (BOOL)t
38、extFieldShouldReturn:(UITextField *)textField { [self.textField resignFirstResponder]; return YES; } 3. 可以在UITextField使用下面方法,按return键返回 -(IBAction) textFieldDone:(id) sender { [textFieldName resignFirstResponder]; } 链接TextField控件的"Did end on exit" 最右侧加图片是以下代码,
39、UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]]; text.rightView=imgv; text.rightViewMode = UITextFieldViewModeAlways; 如果是在最左侧加图片就换成: text.leftView=imgv; text.leftViewMode = UITextFieldViewModeAlways; UITextField 继承自 UIControl,此类中有一个属性co
40、ntentVerticalAlignment 所以想让UITextField里面的text垂直居中可以这样写: text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 查看函数的方法: 按住command键双击进入函数声明 按住alt键双击进入doc文档 /////////////////////////////////////////////////////////////// 文本框常用方法: 如何用程序删除文本框中选中的文本 [textView delete: nil]; ///
41、//////////////////////////////////////////////////////////// 如何限制文本框只能输入数字: 建立NSNumberFormatter的子类,增加这个方法,将formatter链接至文本框。 - (BOOL) isPartialStringValid: (NSString **) partialStringPtr proposedSelectedRange: (NSRangePointer) proposedSelRangePtr originalString: (NSStri
42、ng *) origString originalSelectedRange: (NSRange) origSelRange errorDescription: (NSString **) error { NSCharacterSet *nonDigits; NSRange newStuff; NSString *newStuffString; nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
43、 newStuff = NSMakeRange(origSelRange.location, proposedSelRangePtr->location - origSelRange.location); newStuffString = [*partialStringPtr substringWithRange: newStuff]; if ([newStuffString rangeOfCharacterFromSet:
44、nonDigits options: NSLiteralSearch].location != NSNotFound) { *error = @"不是数字"; return (NO); } else { *error = nil; return (YES); } } //////////
45、///////////////////////////////////////////////////// 从文本框获取十六进制数据的代码 char singleNumberString[3] = {'\0','\0','\0'}; uint32_t singleNumber = 0; uint32_t i = 0; NSMutableData *data = [NSMutableData data]; //从文本框获取到得数据 const char *buf = [[_hexToSendTextField text] UTF8String]; //转换为十六进制
46、for(i = 0; i < strlen(buf); i+=2) { if(((i+1) < len && isxdigit(buf) && (isxdigit(buf[i+1]))) { singleNumberString[0] = buf; singleNumberString[1] = buf[i+1]; sscanf(singleNumberString, "%x", &singleNumber); [data appendBytes:(void*)(&tmp) length:1]; } else { break; } } /
47、/输出 NSLog(@"%@", data); ///////////////////////////////////////////////////////////// 点击 UITextView 输入文字,光标都从最初点开始 - (void)textViewDidChangeSelection:(UITextView *)textView { NSRange range; range.location = 0; range.length = 0; textView.selectedRange = range; } //////////
48、///////////////////////////////////////////////// 软键盘 在登录页面要实现用户名和密码,密码要是点点格式,引入当前页面光标要停留在用户名选项,软键盘要弹出界面。如下图: 弹出键盘: [username becomeFirstResponder]; 取消键盘: [username resignFirstResponder]; 密码保护: password.secureTextEntry=YES; //////////////////////////////////////////////////////////////////
49、 1.UITextField的初始化和设置 textField = [[UITextField alloc] initWithFrame:CGRectMake(120.0f, 80.0f, 150.0f, 30.0f)]; [textField setBorderStyle:UITextBorderStyleRoundedRect]; //外框类型 textField.placeholder = @"password"; //默认显示的字 textField.secureTextEntry = YES; //密码 textField.autocorrectionType = UITextAutocorrectionTypeNo; textField.autocapitalizationType = UITextAutocapitalizationTypeNone; textField.returnKeyTyp






