收藏 分销(赏)

OC常用入门代码.docx

上传人:xrp****65 文档编号:5682997 上传时间:2024-11-15 格式:DOCX 页数:29 大小:372.46KB 下载积分:10 金币
下载 相关 举报
OC常用入门代码.docx_第1页
第1页 / 共29页
OC常用入门代码.docx_第2页
第2页 / 共29页


点击查看更多>>
资源描述
常用代码整理: Xcode6,引入viewController代码: 1. 在Appdelegate先引入ViewController头文件 2. ViewController vc =(ViewController alloc)init; Self.window.rootViewController = vc; 然后vc就代表ViewController对象,就可以调用其属性和方法了。 一般用通知来取代上面的写法: //发送通知 [[[[NSNotificationCenter defaultCenter]] postNotificationName:通知名object::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 多行文字自动换行 (自动折行) UIView *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? where are you? where are you?"; //清空背景颜色 label.backgroundColor = [UIColor clearColor]; //设置字体颜色为白色 label.textColor = [UIColor whiteColor]; //文字居中显示 label.textAlignment = UITextAlignmentCenter; //自动折行设置 label.lineBreakMode = UILineBreakModeWordWrap; label.numberOfLines = 0; iOS的UILabel设置居上对齐,居中对齐,居下对齐 在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,博主参考国外网站,从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐。具体如下: typedef enum   {       VerticalAlignmentTop = 0, // default       VerticalAlignmentMiddle,       VerticalAlignmentBottom,   } VerticalAlignment;   @interface myUILabel : UILabel   {   @private   VerticalAlignment _verticalAlignment;   }      @property (nonatomic) VerticalAlignment verticalAlignment;      @end  @implementation myUILabel   @synthesize verticalAlignment = verticalAlignment_;      - (id)initWithFrame:(CGRect)frame {       if (self = [super initWithFrame:frame]) {           self.verticalAlignment = VerticalAlignmentMiddle;       }       return self;   }      - (void)setVerticalAlignment:(VerticalAlignment)verticalAlignment {       verticalAlignment_ = verticalAlignment;       [self setNeedsDisplay];   }      - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {   1.     CGRect textRect = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];   2.     switch (self.verticalAlignment) {           case VerticalAlignmentTop:               textRect.origin.y = bounds.origin.y;               break;           case VerticalAlignmentBottom:               textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height;               break;           case VerticalAlignmentMiddle:               // Fall through.           default:               textRect.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 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.textAlignment = 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 -[UILabel copyWithZone:]: unrecognized selector sent to instance   遇到了这样一个错误,找了半天没找到是什么错误,于是,Google搜索,打开第一个链接   UILabel 设置过长文本中间为省略号  label.lineBreakMode = NSLineBreakByTruncatingMiddle; 参考:iOS组件之UILabel   iOS UILabel详解 ·UILable是iPhone界面最基本的控件,主要用来显示文本信息。 ·常用属性和方法有: 1、创建 CGRect rect = CGRectMake(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:20]; //⼀一般方法 label.font = [UIFont boldSystemFontOfSize:20]; //加粗方法 label.font = [UIFont fontWithName:@"Arial" size:16]; //指定 字体的方法 //还有⼀一种从外部导入字体的方法。 5、textAlignment //设置标签文本对齐方式。 label.textAlignment = NSTextAlignmentCenter; //还有 NSTextAlignmentLeft、 NSTextAlignmentRight. 6、numberOfLines //标签最多显示行数,如果为0则表示多行。 label.numberOfLines = 2; 7、enabled //只是决定了Label的绘制方式,将它设置 为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的。 label.enable = NO; 8、highlighted //是否高亮显示 label.highlighted = YES; label.highlightedTextColor = [UIColor orangeColor]; //高亮 显示时的文本颜色 9、ShadowColor //设置阴影颜色 [label setShadowColor:[UIColor blackColor]]; 10、ShadowOffset //设置阴影偏移量 [label setShadowOffset:CGSizeMake(-1, -1)]; 11、baselineAdjustment //如果adjustsFontSizeToFitWidth属性设 置为YES,这个属性就来控制文本基线的行为。 label.baselineAdjustment = UIBaselineAdjustmentNone; UIBaselineAdjustmentAlignBaselines = 0,默认,文本最上端与中线对齐。 UIBaselineAdjustmentAlignCenters, 文本中线与label中线对齐。 UIBaselineAdjustmentNone, 文本最低端与label中线对齐。 12、Autoshrink //是否自动收缩 Fixed Font Size 默认,如果Label宽度小于文字长度时时,文字大小不自动缩放 minimumScaleFactor 设置最小收缩比例,如果Label宽度小于文字长度时,文字 进行收缩,收缩超过比例后,停止收缩。 minimumFontSize 设置最小收缩字号,如果Label宽度小于文字长度时,文字字号 减小,低于设定字号后,不再减小。//6.0以后不再使用了。 label.minimumScaleFactor = 0.5; 13、adjustsLetterSpacingToFitWidth //改变字母之间的间距来适应Label大小 myLabel.adjustsLetterSpacingToFitWidth = NO; 14、 lineBreakMode //设置文字过长时的显示格式 label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显 示,后面部分省略不显示。 label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内 容长度,后半部分被删除。 label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字 以……方式省略,显示尾部文字内容。 label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容 以……方式省略,显示头尾的文字内容。 label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容 以……方式省略,显示头的文字内容。 label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显 示,后面部分省略不显示。 15、 adjustsFontSizeToFitWidth //设置字体大小适应label宽度 label.adjustsFontSizeToFitWidth = YES; 16、attributedText:设置标签属性文本。 NSString *text = @"first"; NSMutableAttributedString *textLabelStr = [[NSMutableAttributedString alloc] initWithString:text]; [textLabelStr setAttributes:@{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.text 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] initWithFrame: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,我们可以通过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.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 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);//大小和位置 [btn setTitle:@"ZoomIn" forState:UIControlStateNormal];//正常状况下button显示的标题 [btn setTitle:@"ZoomIn" forState:UIControlStateHighlighted];//高亮显示时button的标题 [btn addTarget:self action:@selector(zoomInAction:) forControlEvents:UIControlEventTouchUpInside];//button被按下又抬起后发生的事件 //@selector可以理解为"选择子",selector是一个指针变量,类似于sender。 这里是将method的方法指定给新建的这个btn。 /*在 method 方法里可以将 sender 看作是 btn 了 
比如设置btn的hidden属性等等 
btn.hidden = YES; 
这样btn被隐藏了 /* // 通过背景图片设置按钮高亮 IImage *normalImage = [UIImage imageNamed:@"NormalBlueButton.png"];      UIImage *highlightedImage = [UIImage imageNamed:@"HighlightedBlueButton"];     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: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] initWithFrame:btnControlRect];        // 设置按钮的背景图片     [btnControl setBackgroundImage:[UIImage imageNamed:@"desc_nomal.png"] forState:UIControlStateNormal];     [btnControl setBackgroundImage:[UIImage imageNamed:@"desc_nomal.png"] forState:UIControlStateHighlighted];     [btnControl setBackgroundImage:[UIImage imageNamed:@"desc_nomal.png"] forState:UIControlStateSelected];     [btnControl setBackgroundColor:[UIColor clearColor]];          [btnControl addTarget:self action:@selector(ClickControlAction:) forControlEvents:UIControlEventTouchUpInside];          [self.scrollView addSubview:btnControl];     [btnControl release]; // 设置按钮的文本         [_btnOrder setTitle:@"预定" forState:UIControlStateNormal];         [_btnOrder setTitle:@"取消" forState:UIControlStateSelected];         // 设置按钮的文本颜色         [_btnOrder setTitleColor:[UIColor colorWithRed:50/255.0 green:50/255.0 blue:50/255.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的初始化和设置 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.returnKeyType = UIReturnKeyDone; textField.clearButtonMode = UITextFieldViewModeWhileEditing; //编辑时会出现个修改X textField.delegate = self; 2.要实现的Delegate方法,关闭键盘 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [self.textField resignFirstResponder]; return YES; } 3. 可以在UITextField使用下面方法,按return键返回 -(IBAction) textFieldDone:(id) sender { [textFieldName resignFirstResponder]; } 链接TextField控件的"Did end on exit" 最右侧加图片是以下代码, UIImageView *imgv=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]]; text.rightView=imgv; text.rightViewMode = UITextFieldViewModeAlways; 如果是在最左侧加图片就换成: text.leftView=imgv; text.leftViewMode = UITextFieldViewModeAlways; UITextField 继承自 UIControl,此类中有一个属性contentVerticalAlignment 所以想让UITextField里面的text垂直居中可以这样写: text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 查看函数的方法: 按住command键双击进入函数声明 按住alt键双击进入doc文档 /////////////////////////////////////////////////////////////// 文本框常用方法: 如何用程序删除文本框中选中的文本 [textView delete: nil]; /////////////////////////////////////////////////////////////// 如何限制文本框只能输入数字: 建立NSNumberFormatter的子类,增加这个方法,将formatter链接至文本框。 - (BOOL) isPartialStringValid: (NSString **) partialStringPtr proposedSelectedRange: (NSRangePointer) proposedSelRangePtr originalString: (NSString *) origString originalSelectedRange: (NSRange) origSelRange errorDescription: (NSString **) error { NSCharacterSet *nonDigits; NSRange newStuff; NSString *newStuffString; nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; newStuff = NSMakeRange(origSelRange.location, proposedSelRangePtr->location - origSelRange.location); newStuffString = [*partialStringPtr substringWithRange: newStuff]; if ([newStuffString rangeOfCharacterFromSet: nonDigits options: NSLiteralSearch].location != NSNotFound) { *error = @"不是数字"; return (NO); } else { *error = nil; return (YES); } } /////////////////////////////////////////////////////////////// 从文本框获取十六进制数据的代码 char singleNumberString[3] = {'\0','\0','\0'}; uint32_t singleNumber = 0; uint32_t i = 0; NSMutableData *data = [NSMutableData data]; //从文本框获取到得数据 const char *buf = [[_hexToSendTextField text] UTF8String]; //转换为十六进制 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; } } //输出 NSLog(@"%@", data); ///////////////////////////////////////////////////////////// 点击 UITextView 输入文字,光标都从最初点开始 - (void)textViewDidChangeSelection:(UITextView *)textView { NSRange range; range.location = 0; range.length = 0; textView.selectedRange = range; } /////////////////////////////////////////////////////////// 软键盘 在登录页面要实现用户名和密码,密码要是点点格式,引入当前页面光标要停留在用户名选项,软键盘要弹出界面。如下图: 弹出键盘: [username becomeFirstResponder]; 取消键盘: [username resignFirstResponder]; 密码保护: password.secureTextEntry=YES; ////////////////////////////////////////////////////////////////// 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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 医学/心理学

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服