UIButton详解

这里是按钮常用的一些方法

自己做记录用查找起来方便

//1.创建UIButton(注意用的不是alloc init方法  而是便利构造器初始化)  并且将按钮添加到view上
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    //初始化按钮的类型
    /*
     UIButtonTypeCustom = 0,                         // 自定义类型
     UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),  // 系统默认的类型  此类型 设置了图片也会是蓝色的
     UIButtonTypeDetailDisclosure,                   // 详细描述样式,圆圈加一个i(蓝色小箭头按钮)
     UIButtonTypeInfoLight,                          // 浅色的详细描述样式(亮色感叹号)
     UIButtonTypeInfoDark,                           // 深色的详细描述样式(暗色感叹号)
     UIButtonTypeContactAdd,                         // 加号样式
     UIButtonTypePlain API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, watchos), // standard system button without the blurred background view
     UIButtonTypeRoundedRect = UIButtonTypeSystem    // 圆角矩形
     */
    btn.frame = CGRectMake(100, 100, 300, 100);
    [self.view addSubview:btn];
    
    //2.给btn设置文字标题
    [btn setTitle:@"这是按钮" forState:UIControlStateNormal];
    /*
     UIControlStateNormal       = 0,                       // 正常状态
     UIControlStateHighlighted  = 1 << 0,                  // 高亮状态,按钮摁下没有抬起来
     UIControlStateDisabled     = 1 << 1,                  // 按钮禁用状态下,不能用
     UIControlStateSelected     = 1 << 2,                  // 选中状态下
     UIControlStateFocused NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 3, //
     UIControlStateApplication  = 0x00FF0000,              // 应用程序标志时
     UIControlStateReserved     = 0xFF000000               // 为内部框架预留
     */
    
    //3设置btn的文字颜色
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    
    //4.设置btn文字的字体大小
    btn.titleLabel.font = [UIFont systemFontOfSize:22];
    
    //5.设置btn背景图片 设置图片 获取指定状态下的背景图片
//    [btn setBackgroundImage:[UIImage imageNamed:@"btn.png"] forState:UIControlStateNormal];
    [btn setImage:[UIImage imageNamed:@"btn.png"] forState:UIControlStateNormal];
    UIImage *img = [btn imageForState:UIControlStateNormal];
    
    //6.设置btn的背景颜色
    btn.backgroundColor = [UIColor greenColor];
    
    //7.设置btn文字阴影颜色
    [btn setTitleShadowColor:[UIColor blueColor] forState:UIControlStateNormal];
    btn.titleLabel.shadowOffset = CGSizeMake(1, 1);
    
    //8.设置btn的adjustsImageWhenHighlighted  默认情况下,按钮被禁用时,图像会被花的颜色深,禁用此功能,可将这个属性设置为NO
    btn.adjustsImageWhenHighlighted = NO;
    
    //9.设置btn的adjustsImageWhenDisabled  默认情况下,按钮被禁用时,图像会被花的颜色淡一些,禁用此功能,可将这个属性设置为NO
    btn.adjustsImageWhenDisabled = YES;
    
    //10.设置btn的showsTouchWhenHighlighted为yes时按钮摁下会发光,
    btn.showsTouchWhenHighlighted = YES;
    
    //11.水平文字对齐-居左或者居右
    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    /*
     UIControlContentHorizontalAlignmentCenter = 0,
     UIControlContentHorizontalAlignmentLeft   = 1,
     UIControlContentHorizontalAlignmentRight  = 2,
     UIControlContentHorizontalAlignmentFill   = 3,
     UIControlContentHorizontalAlignmentLeading  API_AVAILABLE(ios(11.0), tvos(11.0)) = 4,
     UIControlContentHorizontalAlignmentTrailing API_AVAILABLE(ios(11.0), tvos(11.0)) = 5,
     */
    
    //12.垂直对齐方式
    btn.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
    
    //13.内部内容边距
    btn.contentEdgeInsets = UIEdgeInsetsMake(10, 20, 30, 40);
    
    //14.文字内在距离
    btn.titleEdgeInsets = UIEdgeInsetsMake(10, 20, 30, 0);
    
    /*
     //button 一些其他属性
     @property(nonatomic)  UIEdgeInsets contentEdgeInsets; 内容内距离
     @property(nonatomic)  UIEdgeInsets titleEdgeInsets;   标题内距离
     @property(nonatomic)  BOOL  reversesTitleShadowWhenHighlighted; 标题的阴影改变时,按钮是否高亮显示。默认为NO
     @property(nonatomic)  UIEdgeInsets imageEdgeInsets;   图片内边距
     @property(nonatomic)  BOOL adjustsImageWhenHighlighted;按钮高亮的情况下,图像的颜色是否要加深一点。默认是YES
     @property(nonatomic)  BOOL adjustsImageWhenDisabled; 按钮禁用的情况下,图像的颜色是否要加深一点。默认是YES
     @property(nonatomic)  BOOL showsTouchWhenHighlighted; 按下按钮是否会发光 默认是NO
     @property(nonatomic,readonly) UIButtonType buttonType; button的类型
     */
    
    //btn的点击事件,常用的方法:第一个参数是目标对象,一般是self; 第二个参数是SEL类型方法; 第三个参数是按钮的点击事件
    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    /*
     枚举值:
     UIControlEventTouchDown             // 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。
     UIControlEventTouchDownRepeat       // 多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。
     UIControlEventTouchDragInside       // 当一次触摸在控件窗口内拖动时。
     UIControlEventTouchDragOutside      // 当一次触摸在控件窗口之外拖动时。
     UIControlEventTouchDragEnter        // 当一次触摸从控件窗口之外拖动到内部时
     UIControlEventTouchDragExit         // 当一次触摸从控件窗口内部拖动到外部时。
     UIControlEventTouchUpInside         // 所有在控件之内触摸抬起事件
     UIControlEventTouchUpOutside        // 所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。
     UIControlEventTouchCancel           // 所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。
     UIControlEventValueChanged          // 当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。
     UIControlEventEditingDidBegin       // 当文本控件中开始编辑时发送通知
     UIControlEventEditingChanged        // 当文本控件中的文本被改变时发送通知。
     UIControlEventEditingDidEnd         // 当文本控件中编辑结束时发送通知。
     UIControlEventEditingDidEndOnExit   // 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。
     UIControlEventAllTouchEvents        // 通知所有触摸事件。
     UIControlEventAllEditingEvents      // 通知所有关于文本编辑的事件。
     UIControlEventApplicationReserved   // range available for application use
     UIControlEventSystemReserved        // range reserved for internal framework use
     UIControlEventAllEvents             // 通知所有事件
     */
    
    
    //可能会用到的方法
    /*
     设置btn 某个状态下的富文本标题
     - (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(UIControlState)state NS_AVAILABLE_IOS(6_0); // default is nil. title is assumed to be single line
     
     返回btn 某个状态下的标题
     - (nullable NSString *)titleForState:(UIControlState)state;
     
     返回btn 某个状态下的标题颜色
     - (nullable UIColor *)titleColorForState:(UIControlState)state;
     
     返回btn 某个状态下的阴影标题颜色
     - (nullable UIColor *)titleShadowColorForState:(UIControlState)state;
     
     返回btn 某个状态下的图片
     - (nullable UIImage *)imageForState:(UIControlState)state;
     
     返回btn 某个状态下的背景图片
     - (nullable UIImage *)backgroundImageForState:(UIControlState)state;
     
     返回btn 某个状态下的富文本标题
     - (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state NS_AVAILABLE_IOS(6_0);
     
     */

如果有错误请大家帮忙更正

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容