一、UIView常见属性
1.frame 位置和尺寸(以父控件的左上角为原点(0,0))
2.center 中点(以父控件的左上角为原点(0,0))
3.bounds 位置和尺寸(以自己的左上角为原点(0,0))
4.transform形变属性(缩放、旋转)
5.backgroundColor背景颜色
6.tag 标识(父控件可以根据这个标识找到对应的子控件,同一个父控件中的子控件tag不要一样)
7.hidden设置是否要隐藏
8.alpha透明度(0~1)
9.opaque不透明度(0~1)
10.userInteractionEnabled能否跟用户进行交互(YES能交互)
11.superview父控件
12.subviews子控件
13.contentMode内容显示的模式
二、UIView常见方法
1.addSubview:
添加子控件,被添加到最上面(subviews中的最后面)
2.removeFromSuperview
从父控件中移除
3.viewWithTag:
父控件可以根据这个tag标识找到对应的子控件(遍历所有的子控件)
4.insertSubview:atIndex:
添加子控件到指定的位置
5.利用两个类方法执行动画
+ (void)beginAnimations:(NSString *)animationID context:(void*)context;
/* ...需要执行动画的代码..*/
+ (void)commitAnimations;
6.利用block执行动画
/*
duration动画持续时间
animations存放需要执行动画的代码
completion 存放动画完毕后需要执行的操作代码
*/
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations completion:(void(^)(BOOLfinished))completion
三、UIControl
1.只要继承了UIControl,就能简单处理一些事件(点击事件、值改变事件)
2.继承了UIControl的子类:
UIButton、UISlider、UISwitch、UIDatePicker等等
3.当需要监听一个子控件事件的时候,解决步骤:
1>先看它是否继承自UIControl
2>再看它内部是否有delegate属性
4.常用属性
1> enabled能否处理事件,跟UIView的userInteractionEnabled属性类似
2> contentVerticalAlignment内容在垂直方向上的排布方式
3> contentHorizontalAlignment内容在水平方向上的排布方式
5.常用方法
1> 添加监听器
/*
target监听器对象
action 事件触发时所调用的方法,调用target的方法
controlEvents事件类型
*/
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
2> 删除监听器
// 删除监听器后,事件触发时就不会再通知监听器了,也就不会再调用target的action方法了
- (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
3> 获得所有的监听器对象
- (NSSet *)allTargets;
四、UILabel的常见属性
1.text 所显示的文本内容
2.textColor文本颜色
3.font字体
4.shadowColor文字的阴影颜色
5.shadowOffset 阴影的偏差距离(width水平方向的偏差距离,正数右边、height垂直方向的偏差距离,正数下边)
6.textAlignment 设置文字的排布方式(偏左、偏右、居中)
7.numberOfLines 允许文字最多有几行(默认是1,如果为0,自动换行)
五、UIButton
1.常见属性
1> titleLabel获取内部的UILabel对象
2> imageView获取内部的UIImageView对象
2.常见方法
1> 设置内部UILabel显示的文本内容
//设置按钮文本的时候不能 btn.titleLabel.text = @"4324324";
- (void)setTitle:(NSString *)title forState:(UIControlState)state;
2>设置内部UILabel的文字颜色
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
3> 设置内部UILabel的文字阴影颜色
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state;
4>设置内部UIImageView的图片
//设置内部UIImageView的图片不能:btn.imageView.image = [UIImage imagedName:@"0.png"];
- (void)setImage:(UIImage *)image forState:(UIControlState)state;
5> 设置背景图片
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;
6> 下面两个方法需要交给子类去重写,然后用于重新布局button。
//返回内部UILabel的frame(位置和尺寸)
- (CGRect)titleRectForContentRect:(CGRect)contentRect;
//返回内部UIImageView的frame(位置和尺寸)
- (CGRect)imageRectForContentRect:(CGRect)contentRect;
7> 下面这些方法可以获取不同状态下的一些属性值
- (NSString *)titleForState:(UIControlState)state;
- (UIColor *)titleColorForState:(UIControlState)state;
- (UIColor *)titleShadowColorForState:(UIControlState)state;
- (UIImage *)imageForState:(UIControlState)state;
- (UIImage *)backgroundImageForState:(UIControlState)state;
UIView
1.alpha 透明度 0-1 越小越透明
2.hidden 设置隐藏 默认NO->不隐藏 YES->隐藏
3.tag 根据tag值找到视图 默认值为0 一般设置1000
4.视图层级关系
把视图放到前面 bringSubViewToFront
把视图放到后面 SendSubViewToBack
移除视图 RemoveSubSuperview
5.父视图 SuperView
子视图 SubView
6.获取屏幕大小
[[UIScreen MainScreen]bounds]];
7.设置成可见
[self.window MakeKeyAndVisible];
UILable
1.设置文本对齐方式 (默认左对齐)
textAlignment=NSTextAlignmentCenter (居中)
2.设置字体大小 (默认字体大小为17)
lable.Font=[UIFont systemFontofsize:17];
3.添加文本
lable.text=@“此处为字符串”;
4.自适应尺寸
(1)先有文本
(2)设置行数
lable.numberofLines=0; -> =0不限制行数 默认1行
(3)设置自适应
sizeToFit
5.字体阴影
lable.shadowoffset=[UIColor 颜色];
UIButton
1.通过便利构造器创建button(不用写release)
UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom/system]
2.button要单独设置尺寸
3.加边框
.layer.borderWidth =1 (CGFloat) ;
4.加弧度
.layer.cornerRadius = 10 (CGFloat);
5.把多余部分隐藏掉
.layer.masksToBounds = YES;
6.边框颜色
layer.borderColor=[UIColor redcolor].CGColor
7.设置标题
[button setTitle:@“确定” frostbite:UIControlStateNormal]
8.设置字体大小
button.titlelable.font=[UIFont systemFontOfsize:24];
⚠️9.button点击方法
button addTarget:self action:@selector(方法名) forControlEvents:UIControlEventTouchUpInside(点击事件)
-(void)方法名:(UIButton *)button
!!! 10.对属性取反 修改状态
button.selected=!button.selected;(更换背景图片)
11.currenttitle 是点击按钮对应的文字(更换button标题)
⚠️ 12.点击Button跳转到下一个视图/返回
-(void)tiaozhuan:(UIButton *)button
{
1.//先创建一个下一页的对象
secondViewController *second=[[secondViewController alloc]init];
2.//设置动画跳转效果
//模态跳转
[second setModalTransitionType:UIModalTransitionType…];
3.跳转
(1)目标 (2)是否需要动画 (3)block
[self presentViewController:second animated:YES completion:^block];
4.释放内存
[second release];
}
-(void)fanhui:(UIButton *)button
{
[self dismissViewControllerAnimated:YES completion:^block];
}
UITextField
1.placeHolder 提示文字
textfield.placeholder=@“请输入账号”;
2.Search /Google 搜索 Send 发送 GO 前往 Done 完成
3.文本内容
textfield.text=@“内容”;
4.对输入的内容以圆点形式显示
textfield.secureTextEntry=YES (默认是NO) (加密后只能输入英文)
5.键盘样式
textfield.keyboardType=UIkeyboardType…;
6.修改return按钮样式
textfield.returnKeyType=UIreturnKey…;
7.清除按钮样式
textfield.clearButtonMode=UItextfieldviewmodeunless…;
8.在键盘上方添加一个视图
textfield.inputAccessoryView=view;
9.显示自定义的视图
textfield.inputView=view;
⚠️ 10.回收键盘要签协议
(1).签协议
(2).设置代理人
textfield.delegate=self;
(3)实现协议方法
-(void)textfieldshouldReturn:(UITextfield *)textfield
{
[textfield resignFirstResponder]; // 放弃第一响应者,回收键盘
return YES;
}
11.对属性取反,修改状态
textfield.secureTextEntry=!text.secureTextEntry (修改显示密码,隐藏密码)
⚠️ 11.键盘挡住textfield
(1)-(BOOL)textFieldShouldBeginEditing:(UITextfield *)textField //开始编辑
{
CGFloat height=textField.center.y-HEIGHT/2; //获取当前textfield的高度
//判断 如果height>0说明textfield在下面会被键盘挡住
if(height>0){
//把self的中心往上移 height self.view.center=CGPointMake(self.view.center.x,self.view.center.y-height);
}
return YES;
}
(2)-(BOOL)textFieldShounldEndEditing:(UITextField *)textField //编辑结束
{
CGFloat height=textField.center.y-HEIGHT/2; //获取当前textfield的高度
//判断 如果height>0 把刚才移动的距离 height 加回来
if(height>0){
//把self的中心往下拉 就是+height
self.view.center=CGPointMake(self.view.center.x,self.view.center.y+height);
}
return YES;
}
LTView 封装 (lable-textfield View)
1.为了创建一个LTView就可以把两个视图创建出来 所以重写初始化方法
-(id)initWithFrame:(CGRect)frame
{
self=[super initWithFrame:frame];
if(self){
//创建两个视图
[self creatview];
}
return self;
}
2.实现创建视图方法
-(void)creatview
{
创建一个lable
创建一个textfield
}
3.之后在根视图器上创建LTview对象 (最好定义成属性 , 方便调用)
@property(nonatomic,retain)LTView *ltview;
self.ltview=[UIView alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,50);
[self.view addSubView:self.ltview];
[_ltview release];
UIViewController
1.执行顺序
(1)初始化方法 : -(id)initWithNibName [super 父类方法] 系统会自动调用 一般在这里写容器属性的初始化;
(2)loadView(正在加载视图): 就是对self.view进行加载
!!! (3)ViewDidLoad(视图加载完成): 在这个方法里进行视图的创建,然后放到self.view上显示
(4)ViewWillappear(视图将要出现): ViewDidLoad已经执行结束,视图将要出现
(5)viewWillDisappear(视图已经出现):
UIImageView
1.动画效果
(1)先创建数组属性
@property(nonatomic,retain)NSMutableArray *arr;
(2)给数组初始化
self.arr=[NSMutablearray array];
(3)for循环把图片放入数组中
for(int i=0;i<图片数,i++){
NSString *name=[NSString stringwithFomart:@” 图片名+%ld+jpg”,i];
UIImage *image=[UIImage imageNamed:name];
[self.arr addObject:image];
}
(4)建立一个imageView *dog
dog.animationDuration=3; //播放间隔
dog.animationImages=self.arr; //播放内容
dog.animationRepeatCount=NSintergerMax; //播放次数
[dog startAnimation]; //开始播放
UIScrollview
非常重要的属性:
//横向滚动 竖向滑动改变高度
Scrollview.contentSize=CGSizeMake(图片数+self.view.frame.size.width,屏幕高)
2.偏移量
scrollerview.contentOfset=CGPointMake(self.view.frame.view.width,0);
轮播图
7张图
for(NSInteger i=0;i<7;i++){
NSString *nameimage=[NSString stringwithFormat:@“h%ld.jpeg”,i];
UIimage *image=[UIimage imagename:nameimage];
建一个Imageview
把图片放到imageview上,再把imageview放到scrollview上
}
把第七张放到第一张前面
把第一张放到第七张后面
数据存本地
bundle是获取当前工程的所有文件的路径
NSString *path=[NSBundle mainBundle]pathForResource