【问题标题】:UIButton border that changes thickness when selected选择时改变粗细的 UIButton 边框
【发布时间】:2014-07-03 15:45:08
【问题描述】:

我有一个子类 UIButton

- (void)configureButton
{
    self.titleLabel.font = [UIFont systemFontOfSize:18.0f];
    [self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    CALayer *border = [CALayer layer];
    border.backgroundColor = [UIColor whiteColor].CGColor;
    border.frame = CGRectMake(0, self.frame.size.height, self.frame.size.width, 1.0);
    [self.layer addSublayer:border];
}

- (void)setSelected:(BOOL)selected
{
    [super setSelected:selected];
    [self setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];

    // remove all layers ?
    if (selected) {

        CALayer *border = [CALayer layer];
        border.backgroundColor = [UIColor whiteColor].CGColor;

        border.frame = CGRectMake(0, self.frame.size.height, self.frame.size.width,3.0);
        [self.layer addSublayer:border];

        self.titleLabel.font = [UIFont boldSystemFontOfSize:18.0f];
    } else {

        CALayer *border = [CALayer layer];
        border.backgroundColor = [UIColor whiteColor].CGColor;

        border.frame = CGRectMake(0, self.frame.size.height, self.frame.size.width,1.0);
        [self.layer addSublayer:border];
        self.titleLabel.font = [UIFont systemFontOfSize:18.0f];
    }
}

按钮的默认状态下边框为 1.0。当它被选中时,边框应该变成 3.0。当用户切换按钮时,如何清除先前添加的图层并重新添加 1.0 边框?

【问题讨论】:

    标签: ios objective-c ios7 uibutton


    【解决方案1】:

    我相信有一种更简单的方法可以满足您的需求。如果您只是因为您只想拥有不同类型的按钮边框而对 UIButton 进行子类化,您可以尝试不同的方式,但会容易得多。

    使用 2 个不同的按钮背景图片,一个带有边框 1,另一个带有边框 3。

    [self.button setBackgroundImage:[UIImage imageNamed:@"ImageWithBorder1"] forState:UIControlStateNormal];
    [self.button setBackgroundImage:[UIImage imageNamed:@"ImageWithBorder3"] forState:UIControlStateHighlighted];
    [self.button setBackgroundImage:[UIImage imageNamed:@"ImageWithBorder3"] forState:UIControlStateSelected];
    

    使用额外的按钮图像,您的项目可能只需要额外的 10 kb。

    【讨论】:

    • 我最终同意了你的答案!
    • 感谢您选择它作为答案。我很高兴能够帮助您。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2013-02-28
    • 2022-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多