关于 UIButton 的总结

  1. //生成一个btn1对象,不需要alloc和init,而是直接用内置的工厂方法,有很多可CMD+点击查看  
  2.     UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect];  
  3.     //设置位置和宽高  
  4.     btn1.frame=CGRectMake(303030030);  
  5.     //设置按钮的文字,状态有好几种常用的时Normal和Highlighted(点击时状态),可CMD+点击查看  
  6.     [btn1 setTitle:@"点我啊!" forState:UIControlStateNormal];  
  7.     //设置点击后的文本  
  8.     [btn1 setTitle:@"我被点了!" forState:UIControlStateHighlighted];  
  9.     //设置文字颜色  
  10.     [btn1 setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];  
  11.     [btn1 setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];  
  12.     //设置点击时按钮背景颜色,呃,完全不起作用,即无效果  
  13.     [btn1 setTintColor:[UIColor purpleColor]];  
  14.     //点击时按钮发光,就是在按钮中间发亮光,这个有效果  
  15.     btn1.showsTouchWhenHighlighted=YES;  
  16.     //设置tag标签,唯一标记用,可用于分辨是哪个按钮控件  
  17.     btn1.tag=1;  
  18.     //设置背景颜色  
  19.     btn1.backgroundColor=[UIColor redColor];  
  20.     //现在高版本的iOS里这个方法会让人抓狂,因为我们发现,不设置背景时,圆角按钮没有边框,所以上面设置frame其实意义不大  
  21.     //设置了背景或者图片后,背景是矩形,说好的圆角呢?坑爹呢!  
  22.     //所以现在大多数开发都是用UIButtonTypeCustom,而不是UIButtonTypeRoundedRect  
  23.       
  24.     //最重要的添加触发事件用户交互  
  25.     //self是指调用哪个对象的方法  
  26.     //btnClick:是调用的方法,btnClick和btnClick:不一样,后者表示有参数  
  27.     //UIControlEventTouchUpInside是触发事件,有很多,可以CMD+点击查看  
  28.     //这里三个参数都可以随意更换,比如新建一个类Hi,在类里定义一个方法-(void)report;  
  29.     //然后在此文件引入Hi.h头文件,在这里实例化一个对象hi1,然后就可以用hi1代替self,用report代替btnClick  
  30.     //意思就是点击后调用的是hi1对象里面的report方法  
  31.     [btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];  
  32.       
  33.     //再增加一个按钮  
  34.     UIButton *btn2=[UIButton buttonWithType:UIButtonTypeContactAdd];  
  35.     btn2.frame=CGRectMake(308030030);  
  36.     //这个增加联系人按钮其实也是一个矩形,和上面的一样,都是继承自UIControl,而后者又继承自UIView,所以是矩形  
  37.     //虽然按钮就一点点大,但点击整个矩形区域都是相当于点击按钮  
  38.     btn2.backgroundColor=[UIColor greenColor];  
  39.     //设置标签  
  40.     btn2.tag=2;  
  41.     //增加事件:和btn1调用同一个方法,但问题是我们如果需要区分是哪个按钮的话,就需要用到tag,并且把控件作为参数传递给btnClick  
  42.     [btn2 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];  
  43.       
  44.     //再增加一个最常用的Custom按钮,其他按钮自己尝试  
  45.     UIButton *btn3=[UIButton buttonWithType:UIButtonTypeCustom];  
  46.     btn3.frame=CGRectMake(30 , 150 , 30090);  
  47.     btn3.backgroundColor=[UIColor redColor];  
  48.     btn3.tag=3;  
  49.     [btn3 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];  
  50.     //设置图片背景被点击时变暗(但没有图片背景时则无效果)  
  51.     btn3.adjustsImageWhenHighlighted=YES;  
  52.     //所以,增加图片方式之一是增加背景图片,这个图片如小会被放大充满整个背景  
  53.     [btn3 setBackgroundImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];  
  54.     //还有一种增加图片的方式,是在按钮上面加而不是背景,这种方式不会缩放图片,而且会居中  
  55.     [btn3 setImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];  
  56.     //设置按钮文字,增加的文字会和setImage图片一并居中,图片在左边,文字紧随其后  
  57.     [btn3 setTitle:@"自定义按钮" forState:UIControlStateNormal];  
  58.     //如果需要重新排版这个图片和按钮文字的位置,则需要重写UIButton类里面的两个函数,点击UIButton可查看  
  59.     //- (CGRect)titleRectForContentRect:(CGRect)contentRect;文字相对于按钮的位置  
  60.     //- (CGRect)imageRectForContentRect:(CGRect)contentRect;图片相对于按钮的位置  
  61.     //第一步:可以重新定义一个UIButton类叫myButton,在.m里重写如下函数  
  62.     //- (CGRect)titleRectForContentRect:(CGRect)contentRect{  
  63.     //    return CGRectMake(50, 25, 100, 40);  
  64.     //}  
  65.     //- (CGRect)imageRectForContentRect:(CGRect)contentRect{  
  66.     //    return CGRectMake(150, 25, 40, 40);  
  67.     //}  
  68.     //第二步,在这个文件中引入myButton.h头文件,然后实例化btn3的时候,用myButton,而不用原始的UIButton  
  69.     //myButton相当于稍微定制了一下原生的UIButton,所以前者实例出得对象也就具有定制效果  
  70.     //这种方式仅对UIButtonTypeCustom有效,其他无效  
  71.       
  72.     //把三个按钮显示出来  
  73.     [self.view addSubview:btn1];  
  74.     [self.view addSubview:btn2];  
  75.     [self.view addSubview:btn3];  
  76.     [super viewDidLoad];  
  77.     // Do any additional setup after loading the view, typically from a nib.  
  78. }  
  79. //增加一个参数,即由原先的-(void)btnClick{}变成如下  
  80. //因为我们知道这里都是按钮对象,所以可以用(UIButton *)sender,但通常我们用通用指针id  
  81. -(void)btnClick:(id)sender{  
  82.     //把传递过来的控件参数转化成按钮  
  83.     UIButton *btn=(UIButton *)sender;  
  84.     //把btn.tag转化成整型  
  85.     NSLog(@"OMG,it is %i",(int)btn.tag);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值