IOS UI控件 - UIButton

1,UIButton的属性

1)这两个属性,可以设置在高亮状态和不可用状态小,按钮的样式是否发生变化,默认是YES。

@property(nonatomic)BOOL adjustsImageWhenHighlighted;    // default is YES. if YES, image is drawn darker when highlighted(pressed)
@property(nonatomic)BOOL adjustsImageWhenDisabled;       // default is YES. if YES, image is drawn lighter when disabled
2)通过UIControl的这两个属性的 set方法 设置UIButton上文字的对齐方式

@property(nonatomic) UIControlContentVerticalAlignment contentVerticalAlignment;
@property(nonatomic) UIControlContentHorizontalAlignment contentHorizontalAlignment;

3)在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets、titleEdgeInsets、imageEdgeInsets

    通过titleEdgeInsets,imageEdgeInsets,可以控制标题和图片的位置,还能控制图片的大小

@property(nonatomic) UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR; // default is UIEdgeInsetsZero  // 按钮content内外线边缘绘制区域.content包含按钮图片和标题
@property(nonatomic) UIEdgeInsets titleEdgeInsets;                // default is UIEdgeInsetsZero  
@property(nonatomic) UIEdgeInsets imageEdgeInsets;                // default is UIEdgeInsetsZero  
 确定按钮高亮时是否改变阴影的Bool值.默认时NO,当为YES时,阴影在雕刻与浮雕感之间变化(差不多就是去正常offset的相反数作为新的offset)
@property(nonatomic)          BOOL         reversesTitleShadowWhenHighlighted; // default is NO. if YES, shadow reverses to shift between engrave and emboss appearance  
4)得到尺寸

– backgroundRectForBounds: // 返回背景绘制区域.
– contentRectForBounds: // 返回内容绘制区域.内容区域是显示图片和标题及他们特定对齐缩放等的范围.
– titleRectForContentRect: // 返回标题的绘制区域.
– imageRectForContentRect: // 返回图片的绘制区域.

5)其它属性

// 设置边距,边界
@property(nonatomic)          UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR;
@property(nonatomic)          UIEdgeInsets titleEdgeInsets; 
@property(nonatomic)          UIEdgeInsets imageEdgeInsets;  
// 点击时候是否高亮显示
@property(nonatomic)          BOOL         showsTouchWhenHighlighted;
// UIButton的类型
@property(nonatomic,readonly) UIButtonType buttonType;


2,UIButton的方法

1)创建一个UIButton一般都使用这个类方法来创建,并设置UIButton的类型,这个类型智能在创建的时候设置,buttonType这个属性是只读的。

+ (id)buttonWithType:(UIButtonType)buttonType;  




3,获取UIButton上的文字,图片,背景色等

// 这六个方法,可以获取任意状态下,设置在按钮上的图片、文字、背景颜色等
- (NSString *)titleForState:(UIControlState)state;          // these getters only take a single state value
- (UIColor *)titleColorForState:(UIControlState)state;
- (UIColor *)titleShadowColorForState:(UIControlState)state;
- (UIImage *)imageForState:(UIControlState)state;
- (UIImage *)backgroundImageForState:(UIControlState)state;
- (NSAttributedString *)attributedTitleForState:(UIControlState)state NS_AVAILABLE_IOS(6_0);

// 这六个属性可以获取 当前状态下,设置的图片的各种属性
@property(nonatomic,readonly,retain) NSString *currentTitle; // normal/highlighted/selected/disabled. can return nil
@property(nonatomic,readonly,retain) UIColor  *currentTitleColor;  // normal/highlighted/selected/disabled. always returns non-nil. default is white(1,1)
@property(nonatomic,readonly,retain) UIColor  *currentTitleShadowColor;  // normal/highlighted/selected/disabled. default is white(0,0.5).
@property(nonatomic,readonly,retain) UIImage  *currentImage;  // normal/highlighted/selected/disabled. can return nil
@property(nonatomic,readonly,retain) UIImage  *currentBackgroundImage;// normal/highlighted/selected/disabled. can return nil
@property(nonatomic,readonly,retain) NSAttributedString *currentAttributedTitle NS_AVAILABLE_IOS(6_0);  // normal/highlighted/selected/disabled. can return nil

4,问题和补充

1)如果需要在按钮上同时显示出图片和文字的话,可以直接使用UIButton的setImage方法来设置,但是,如果图片尺寸过大的时候,缩小尺寸就会导致文字找不到了,出现这种问题的原因和解决办法如下所示(这样解决了视觉上的问题,但是新问题是,点击文字时候并不会触发按钮的单击事件):

另一种解决自定义button,或者是 使用drawRect重绘图片,改变图片的尺寸。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值