美文网首页
UIButton详解

UIButton详解

作者: 杰boy | 来源:发表于2018-05-24 17:13 被阅读0次

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

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

    //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);
         
         */
    

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

    相关文章

      网友评论

          本文标题:UIButton详解

          本文链接:https://www.haomeiwen.com/subject/rubjjftx.html