如何将一个UILabel添加为UIButton的子视图(iOS)

4
我想在一个UIButton中添加一个UILabel。 这是我的代码:
- (void)viewDidLoad
{
    [super viewDidLoad];
    [[self addressSearch] setDelegate:self];
    [[self worldMap] setDelegate:self];

    self.boolPushButtonTapped = YES;
    self.addressSearch.barStyle = 1;

    //Create pushButton
    self.pushButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.pushButton.frame = CGRectMake(106, 436, 110, 59);

    [self.pushButton setBackgroundImage:[UIImage imageNamed:@"pushButton2.png"] forState:UIControlStateNormal];
    [self.pushButton addTarget:self action:@selector(pushButtonTapped) forControlEvents:UIControlEventTouchUpInside];


    //Label
    self.distanceLabel = [[UILabel alloc] init];

    self.distanceLabel.text = @"test";

    [self.pushButton addSubview:self.distanceLabel];


    [self.view addSubview:self.pushButton];
}

如果我不使用alloc init,就会收到一个错误提示。而如果我使用它,那么标签中的文本就没有改变。 错误提示:
*** Assertion failure in -[NSLayoutConstraint constant], /SourceCache/Foundation/Foundation-992/Layout.subproj/NSLayoutConstraint.m:560
2012-10-01 14:01:01.889 RemindMe[1116:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '(null)'

我想在这个按钮里添加动画效果,有什么建议吗?请参考以下内容:

我想为这个按钮添加动画效果,你有什么建议吗?


你想设置按钮的文本还是在UIButton的框架内设置UILabel实例? - pasawaya
在UIButton内设置一个UILabel实例。 - Camus
2个回答

1

现在UIButtons给你很多控制权,但在一些像自定义字体这样的事情之前,我只是做了一个简单的控件,其中包含一个UIButton和UILabel。我只是把UILabel放在UIButton上面,再加上小小的2px或者更多的填充。


但是这样做我需要为 UILabel 和 UIButton 添加动画效果,对吧? - Camus
1
抱歉,我错过了动画部分。有办法让它工作,但如果你只需要没有花哨格式或其他东西的文本,请使用KarenAnne列出的代码。 - InfalibleCoinage

1
你可以尝试这个:
[self.pushButton.titleLabel setText: @"anytext"];

更新的答案:

UIButton Class Reference中所述,您应该使用setTitle:forState:来设置标题。

然后可以在按钮的关联标签对象titleLabel中进行格式设置。

因此,您无需添加另一个UILabel。

希望这可以帮助您!


1
谢谢。我认为这是最简单的方法。在我的情况下,没有必要创建一个UILabel。 - Camus
1
这实际上会导致titleLabel的大小问题,并可能截断文本。设置按钮标题的正确方法是使用[self.pushButton setTitle:@"anytext" forState:UIControlStateNormal]; 这将适当地调整按钮标签以适应新标题。 - Jeremy Z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接