UI基础
一、一些注意点
1、拿到一个控件的方法可以是将该控件变成属性(通过连线或者重代码在定义控件的时候用弱指针指向),或者使用tag值来获取- (UIView)viewWithTag:(NSInteger)tag
特别注意在使用tag值获得的控件是需要强转成需要的类型的,返回的时UIView类型
2、连线就是在赋值,因为oc的语法对象都是默认一指针形式出现的,这里的连线其实就是指针变量赋值,不过我们不需要像使用代码一样,需要自己去定义对象(指针),是有系统自动完成的,我们只需要在连线过程当中提供变量名即可,其余操作有xcode自动完成
3、ios当中的角度都是弧度制eg:π/n就是宏M_PI_n,最大float 为MAXFLOAT
4、九宫格的布局,记住一点,商行余列
5、+方法的id和instancetype是有区别的,instancetype会检测真实数据类型,如果类型不匹配,回报警告
6、userinteractionEnable是一级一级继承传递的,如果父控件是NO,子控件都是NO
7、收起键盘的方法就是,解除第一调用者的身份,呼出键盘的空间,就会成为第一调用者
a.resignFirstresponder
b.[self.view endEditing];
8、控件圆角实现,可以修改控件的主图层的layer.cornerRadian;然后让控件遵循主图层显示设置layer.MaskToBound = YES;layer代表主图层
9、计算文字的size(建议写成NSString的分类),分类名一功能命名最好,常用加好方法,也会用到减号方法,只要方便使用
10、动画嵌套UIview animation…
11、所有的if...else...都可以改成三目运算来简化
12、NSString的对象方法boundingRectWithSize:options:attributes:context,用于计算String所占的size
13、CGRectGetMaxy(CGRect)frame,返回frame最大的y值,其他类似
14、[UIScreen mainScreen]返回UIView
CGSize screenSize = [UIScreenmainScreen].bounds.size;返回主屏幕的size
15、transform是相对于原位置的形变属性,也就是说如果将某个对象的旋转了M_PI_2,如果要再转回去不是旋转-M_PI_2,而是0;
16、颜色
24bit色RGB(红绿蓝)
32bit色ARGB(alpha,红绿蓝)
[UIColorcolorWithRed:52/255.0fgreen:86/255.0blue:120/255.0alpha:255/255.0];
17、UIAlertView
// 1. 创建弹框
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"要更改的英雄" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
/*
UIAlertViewStyleDefault = 0,
UIAlertViewStyleSecureTextInput,
UIAlertViewStylePlainTextInput,
UIAlertViewStyleLoginAndPasswordInput
*/
// 2. 设置弹框的类型
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
// 3. 设置弹框里de文本框的文字
[alert textFieldAtIndex:0].text = hero.name;
// 4.显示
[alert show];
18、frame的设置时机
1>控件的init方法是没有frame的,通常不会设置子控件的frame,因为子控件的frame是根据父控件frame设置的,此时设置frame是没有任何意义的;通常控件的frame只有在init方法之后,frame是UIView的一个属性,只要设置frame肯定会调用到frame的setter方法,所以要设置子控件的frame起码得在父控件的frame的setter方法中,或者在之后。我们可以选择重写父控件的setter方法,在其中设置子控件frame。但是通常使用常用的方法是重写layoutSubViews
2>UIView的牛逼方法:layoutSubViews,当一个父控件的frame发生变化的时候,就会调用该方法,来重新对控件的子控件进行重新布局,当重写layoutSubViews的时候必须首先调用[super layoutSubViews];
19、#warning 警告内容,可以作为标记代码进度的方法
20、一个tableView的头和尾既可以放一个UIView,也可以放设置一个字符串做标题
21、用xib文件创建一个cell的时候重用的标示符是在xib文件当中设置的