iOS - UIButton 开发总结

一 UIButton基础 

     iOS中提供了UIButton、UILable、UITextField、UIImageView等基础UI控件,继承于UIView。 

     UIbutton继承自UIControl,UIControl派生自UIView类,每个控件都有很多视图的特性,包括附着于其他视图的能力,所有控件都拥有一套共同的属性和方法,包含显示内容,点击事件等等,UIControl的子类都有事件处理能力。 



 UIButton的定义: 

      UIButton可使用 initWithFrame、buttonWithType两种方式创建。 



 UIButton使用如下方法添加事件。 

 [btn addTarget:<#(id)#> action:<#(SEL)#> forControlEvents:<#(UIControlEvents)#>]   

 这些事件都是基于触摸、基于值、基于编辑。 





 二 设置UIButton的文字显示位置、字体的大小、字体的颜色 

 btn.frame = CGRectMake(x, y, width, height); 

 [btn setTitle: @"search" forState: UIControlStateNormal]; 

 //设置按钮上的自体的大小 

 //[btn setFont: [UIFont systemFontSize: 14.0]];    //这种可以用来设置字体的大小,但是可能会在将来的SDK版本中去除改方法 

 //应该使用 

 btn.titleLabel.font = [UIFont systemFontOfSize: 14.0]; 

 [btn seBackgroundColor: [UIColor blueColor]]; 

 //最后将按钮加入到指定视图superView 

 [superView addSubview: btn]; 

 ========================================================== 

 tvnamelabel=[[UIButton alloc]initWithFrame:CGRectMake(5,5,200,40)]; 

 这样初始化的button,文字默认颜色是白色的,所有如果背景也是白色的话,是看不到文字的, 

 btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft ;//设置文字位置,现设为居左,默认的是居中 

 [btn setTitle:@“title”forState:UIControlStateNormal];// 添加文字 

 有些时候我们想让UIButton的title居左对齐,我们设置 

 btn.textLabel.textAlignment = UITextAlignmentLeft 

 是没有作用的,我们需要设置 

 btn.contentHorizontalAlignment = UIControlContentHorizonAlignmentLeft; 

 但是问题又出来,此时文字会紧贴到做边框,我们可以设置 

 btn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0); 

 使文字距离做边框保持10个像素的距离。 

 ======================================================= 

 设置UIButton上字体的颜色设置UIButton上字体的颜色,不是用: 

 [btn.titleLabel setTextColor:[UIColorblackColor]]; 

 btn.titleLabel.textColor=[UIColor redColor]; 

 而是用: 

 [btn setTitleColor:[UIColor blackColor]forState:UIControlStateNormal]; 



 三 uibutton实现左文字右图片 

 [btnRight setTitleEdgeInsets:UIEdgeInsetsMake(0, -imgArrow.size.width, 0, imgArrow.size.width)]; 

 [btnRight setImageEdgeInsets:UIEdgeInsetsMake(0, btnRight.titleLabel.bounds.size.width, 0, -btnRight.titleLabel.bounds.size.width)];



uibutton默认是左图片,右文字。并且在设置edge insets之前,位置已经有了设定。所以设置title的edge insets,真实的作用是在原来的边距值基础上增加或减少某个间距,负值便是减少。以title为例,设置右边距增加图片宽度,就使得自己的右边界距离按钮的右边界多了图片的宽度,正好放下图片。此时,title lable变小了,而title lable的左边界还在原来的位置上,所以lable的左边界距离按钮的左边界减少图片的宽度,lable就和原来一样大了,而且左侧起始位置和图片的左侧起始位置相同了。