gpt4 book ai didi

objective-c - UIButton 子类 - 设置属性?

转载 作者:可可西里 更新时间:2023-11-01 03:06:05 26 4
gpt4 key购买 nike

我已经创建了一个 UIButton 的子类来给它一个白色的 2px No Radii 边框,现在我正在尝试根据按钮状态“全局”设置它的字体、字体颜色和背景颜色。

字体没有设置。颜色或背景颜色也没有。这是怎么回事?这是我的代码。我希望你能帮忙:)

- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {

[[self titleLabel] setFont:[UIFont fontWithName:@"ZegoeUI" size:18]];
[self setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
if(self.state == UIControlStateHighlighted) {
[self setBackgroundColor:[UIColor whiteColor]];
}
else {
[self setBackgroundColor:[UIColor blackColor]];
}
}
return self;
}

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {

[self.layer setMasksToBounds:YES];
[self.layer setBorderWidth:2.0];
[self.layer setCornerRadius:0.0];
[self.layer setBorderColor:[[UIColor colorWithWhite:1.0 alpha:1.0] CGColor]];
}

我不认为我做错了什么。我有这个类,并在 IB 中链接了按钮,并设置了类类型。

最佳答案

如果您在 IB 中创建了自定义子类按钮,则不会调用 initWithFrame:。您需要覆盖 initWithCoder:,或者最好创建一个单独的设置方法,该方法同时从 initWithFrame:initWithCoder: 调用。

对于第一种情况:

- (id)initWithCoder:(NSCoder*)coder {
self = [super initWithCoder:coder];
if (self) {

[[self titleLabel] setFont:[UIFont fontWithName:@"ZegoeUI" size:18]];
[self setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
if(self.state == UIControlStateHighlighted) {
[self setBackgroundColor:[UIColor whiteColor]];
}
else {
[self setBackgroundColor:[UIColor blackColor]];
}
}
return self;
}

关于objective-c - UIButton 子类 - 设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7644617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com