UI基础控件

一、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

你可能感兴趣的:(UI基础控件)