/****************** 总 结 ************************
2015年08月26日
1,UIColor的初始化:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg2.jpg"]]; //将背景图片设置成颜色类型的作为背景颜色来展示。
2,_password.secureTextEntry = YES; //设置不可见文本框设置成输入不可见类型的
3,_password.alpha = 0.8;//设置透明度,很多的控件都有这个属性 alpha
3,关于尺寸:
[[UIScreen mainScreen] bounds] //调用这个方法会直接返回一个CGRect类型的数据
[[UIScreen mainScreen] bounds].size.width //方法调用和 .可以混合使用
self.view.frame //可以通过这个获取一个控件的frame,就是尺寸,位置和大小
4,置空文本框的时候 obj.text = @"" 或者 obj.text = nil 这两种都可以
5,文本框放弃第一响应者的方法: resignFirstResponder , [self.view endEditing],结束对这个view的编辑状态,这个view上所有的控件都会放弃第一响应者。
下面这几个方法来自 UIResponder , UIViewController继承自UIResponder,就是说,所有的控件都有这几种方法
- (BOOL)canBecomeFirstResponder; // default is NO 是否可以成为第一响应者
- (BOOL)becomeFirstResponder; //成为第一响应者
- (BOOL)canResignFirstResponder; // default is YES 是否可以放弃第一响应者
- (BOOL)resignFirstResponder; //放弃第一响应者
- (BOOL)isFirstResponder; //是不是第一响应者
6,view布局之间的层次关系的认识: 比如新建的一个UIView,这个view 上可以放任何的一种控件,控件上面还可以放任何的控件,比如在view上放scrolView控件,虽然这个控件占据了所有的屏幕空间,但是还是可以在被覆盖的view上放置控件,切新放置的控件会覆盖掉scrolView,比如放一个按钮,那么按钮将显示在固定的位置而不会随着scrolView滚动!
7,页面跳转的两种方法:
1)新建一个view对象并跳转到新创建的页面上去
//a,跳转时候
ScrollView *scrollView = [[ScrollView alloc] init];
//实现页面跳转的函数,是self的一个方法, 第一个参数是要跳转到的新页面的对象,第二个是是否可以执行跳转 第三个参数是代码块
[self presentViewController:scrollView animated:YES completion:nil];
//b,返回时候
//这个返回实际上是将新的view给销毁掉,调用这个view时候,原理是这个覆盖掉原来的,原来的还是存在的。
[self dismissViewControllerAnimated:YES completion:nil];
2)使用 UINavigationController
UINavigationController *ng = [[UINavigationController alloc] init]; //创建这种布局的一个对象
[ng pushViewController:mainView animated:YES]; //将第一个页面添加到这个对象上
self.window.rootViewController = ng; //将window的根视图变成UINavigationController的视图
//返回的时候,这个视图提供了返回的按钮
2015年08月27日
1,当OC对象中包含一个结构体类型数据的时候,不能通过OC对象来直接修改成员中结构体的数值, 可以先将结构体取出来放到结构体中,再修改,然后再重新赋值。
2,当发现程序挂掉,发生一堆错误的时候, 看错误的第一句上得 “reason”
3,三种设置UIButton按钮的背景图片的方式和区别:
//1) 拉伸图片的效果,图片将会按照btn的大小显示出来,图片可能被拉伸或者压缩
[_loginBtn setBackgroundImage:[UIImage imageNamed:@"btn_登录_n.png"] forState:UIControlStateNormal]; //
//2) 保持图片原有的尺寸,不会拉伸缩小,如果按钮尺寸比图片原有尺寸大,将保持图片原有尺寸,图片放在按钮的正中央,比图片大得部分不会被覆盖;如果按钮尺寸比图片尺寸小,图片将会被压缩,(不会被拉伸)
[_loginBtn setImage:[UIImage imageNamed:@"btn_登录_n.png"] forState:UIControlStateNormal];
//3) 保持图片原有尺寸并,平铺效果,图片不会被拉伸或者压缩,如果比图片大图片平铺整个btn,按钮比图片小,图片显示不全
_loginBtn.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn_登录_n.png"]]; //
4,tag属性
sender.tag //,通过设置这个tag属性,可以实现多个按钮执行同一个事件,在事件监听器中判断这个tag是多少以此判断是哪个按钮触发了这个事件,从而实现,不同按钮实现不同的操作。
5, 控件的属性,frame,center,bounds
1) frame 属性是CGRect结构体类型的变量,可以通过这个属性修改控件的大小和位置。
2)center 属性是CGPoint类型的数据,其中x y表示的是控件的中心位置。可以通过这个属性改变控件的位置
3)bounds 属性是CGRect结构体类型的数据,其中 origin中的数据都是0,size 中的width和height表示控件的长宽,这个属性虽然是包含了size和zrogin信息,但是有用的信息只有size,就是说origin中的数据是没用的,通过bounds修改控件大小时候,控件会以中心点为原点来缩放。
6,NSStringFromCGRect(bounds) 通过这个方法可以直接输出结构体中的数据,这个方法是系统提供的,已经实现过得,CGPoint,CGSize都可以这样输出。
NSLog(@"%@", NSStringFromCGRect(bounds));
7,简单的动画效果:
1)头尾式动画:
[UIView beginAnimations:nil context:nil]; //开始动画
[UIView setAnimationDuration:1]; //设置动画持续时间 1s
//------------- 要实现动画效果的代码 -----------------
img.center = center; //改变btn的坐标
[UIView commitAnimations]; //提交动画
2)Block式动画:
[UIView animateWithDuration:1 animations:^{ //设置动画和动画的持续时间
//------------- 需要执行动画的代码 -------------
imgBtn.center = center; //需要执行动画效果的代码
}];
8,一个UIImage对象代表一张图片,一般通过 imageNamed:方法就可以通过文件名加载项目中的图片 (PNG格式的图片可以省略后缀名!!!!!)
9,UIView 和 UIViewController的关系:
UIView只负责对数据的展示,采集用户的输入,监听用户的事件等;其它的操作,如,每个UIView的创建、销毁、用户触发某个事件后的事件处理程序等,这些都交给UIViewControlller来处理。
10,UIView常见的方法:
1)- (void)removeFromSuperview; //从父控件中移除当前的控件
2)- (void)addSubview:(UIView *)view; //在控件中添加一个控件
3)- (UIView *)viewWithTag:(NSInteger)tag; //根据tag标示找出对应的控件一般都是子控件 [[self.view viewWithTag:4] removeFromSuperview];
11,UIView常见的属性:
1)@property(nonatomic) NSInteger tag; // default is 0 //控件的ID[标识],父控件通过ID可以找到对应的子控件,通过方法 viewWithTag:
2)@property(nonatomic) CGAffineTransform transform; //控件的变形 属性,[可以设置控件的旋转角度,比例缩放,平移等属性]
3)@property(nonatomic,readonly) UIView *superview; //获得自己的父类控件,获得之后可以直接更改父类控件的属性 [obj superview].backgroundColor = [UIColor redColor]; 将父类控件的背景颜色改为红色
4)@property(nonatomic,readonly,copy) NSArray *subviews; //获得自己所有的子类控件。
//如下例子所示,
NSArray *arr = [NSArray arrayWithArray:self.view.subviews]; //获取self.view中所有的子控件并存放到arr数组中
for (UIView *view in arr) { //使用for in语法遍历数组,找到每一个控件
[view removeFromSuperview]; //找到第一个控件并将其移除
break;
}
11, UIView的alpha、hidden和opaque属性之间的关系和区别http://blog.csdn.net/wzzvictory/article/details/10076323
当把UIView的alpha属性设成0,或者把hidden设成YES的时候,当前UIView和它所包含的子UIView都会变成不可见,同时也不会再响应event事件。注意这里是或的关系,即只要设置了其中的一个都会有此效果,而不管另外一个属性的值是什么。
[self.view viewWithTag:4].hidden = ([self.view viewWithTag:4].hidden == NO) ? YES : NO;
[self.view viewWithTag:4].alpha = 0.011; //alpha设置为 >0.01时候,就可以操作,<=0.01 , view和它的子控件将会丧失响应事件的能力
2015年08月28日
1,UIAlertView的基本使用 见 TestAlertView.m 文件中。
2, UITestField 的 keyboardType 属性: 控制文本框唤出的键盘是什么类型的
_userName.keyboardType = UIKeyboardTypePhonePad;
_userName.keyboardType = UIKeyboardTypeNamePhonePad;
3, 设置占位符的三种方式:
1) _userName.placeholder = @"用户名"; //普通的方式
2) _userName.attributedPlaceholder = (NSAttributedString *)str; //使用attributedPlaceholder属性
3)[_userName setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"]; //修改占位符标签的方式
2015年09月02日
1,plist基本用法:
//先新建一个地址 并从地址读取对应的数据类型到array中。
NSString *path = [[NSBundle mainBundle] pathForResource:@"MePropertyList.plist" ofType:nil];
_myMainViewDelegate.meCellModelArray = [NSMutableArray arrayWithContentsOfFile:path];
2,设置view的边框:
_myFootView.layer.borderWidth = 0.3; //设置边框的宽度
_myFootView.layer.borderColor = [[UIColor lightGrayColor] CGColor]; //设置边框的颜色
3,代理类设置为其它类:
_myTableView.dataSource = _myMainViewDelegate;
_myTableView.delegate = _myMainViewDelegate;
以前做的都是将类的代理设置为本类,其实代理类还可以设置为其它的类,并且这么做是非常必要的,比如,一个viewcontroller中有多个tableview的时候,每个Tableview都需要设置数据源和代理,当多个tableview的代理都设置为本类的时候,就会造成调用混乱不便于编程和维护,这时候应该把不同的tableview的代理设置为不同的其它的类,这时候把与tableview相关的数据等等都定义在代理类中,这样做便于在代理类中操作数据,又能减少主view中的代码量。
示例见:微博例子
4,Block代码块的总结见 CSDN博客
5,
- //2,一般情况,我们都会使用自己的颜色,一般使用下面的宏定义设置颜色:
- #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]