子类化UIButton的titleLabel

时间:2015-05-27 15:19:35

标签: ios objective-c uibutton uilabel

有想法或示例如何为UIButton的titleLabel创建子类?我想在不同的controlState期间更改文本Button的文本行为。我希望如果突出显示该按钮,则只能显示文本边框。

2 个答案:

答案 0 :(得分:0)

您可以在UIButton中继承.h,您可以将自定义UILabel作为titleLabel的{​​{1}}

UIButton

如果要在@property (nonatomic, strong) UILabel *nameLabel; 的不同状态期间调用某个方法,可以重写该方法:

UIButton

我编写了一个简单的代码来说明如何自定义- (void)setHighlighted:(BOOL)highlighted { self.nameLabel.backgroundColor = [UIColor redColor]; } - (void)setSelected:(BOOL)selected { self.nameLabel.backgroundColor = [UIColor blueColor]; }

a simple code to show how to custom a UIButton

答案 1 :(得分:0)

  1. 创建自定义UIButton。
  2. 创建UILabel
  3. 使用CALayer绘制UILabel周围的边框。
  4. 将UILabel添加为UIButton的子视图。
  5. 请参考下面的代码,它们正在做同样的事情。为按钮的相应状态添加边框。

    -(void)addBorderToButtonLabel
    {
        CGRect labelRect = self.sampleButton.bounds;
        labelRect.origin.x = 10;
        labelRect.origin.y = 5;
        labelRect.size.width -= 10 *2;
        labelRect.size.height -= 5 * 2;
    
        UILabel *label = [[UILabel alloc] initWithFrame:labelRect];
        label.text = @"My Sample";
        label.textAlignment = NSTextAlignmentCenter;
        label.layer.borderColor = [UIColor greenColor].CGColor;
        label.layer.borderWidth = 3.0;
    
        [self.sampleButton addSubview:label];
    }