UIButton标签显示0宽度

时间:2015-10-12 19:13:00

标签: ios objective-c uibutton autolayout

我有一个自定义按钮类,我在我的故事板文件中设置文本。该文本是一个简单的"更新电子邮件地址"并且不会在应用程序的整个生命周期中发生变化。

但是,我有一个想要添加到按钮的图像,当我这样做时,我按照以下方式设置图像,在公共按钮类中的方法中:

[self setTintColor:[UIColor whiteColor]];
    UIImage *icon = [UIImage imageNamed:iconName];
    CGFloat iconWidth = icon.size.width;
    [self setImage:icon forState:UIControlStateNormal];
    [self setWidth:self.width+iconWidth*2];
    [self setOriginX:self.x-iconWidth];
    [self setTitleEdgeInsets:UIEdgeInsetsMake(0, -iconWidth*2, 0, 0)];

    CGFloat leftMargin = 10;
    CGFloat moveLeft = self.titleLabel.frame.size.width + self.titleLabel.x + leftMargin;
    [self setImageEdgeInsets:UIEdgeInsetsMake(0, moveLeft , 0, 0)];

但是,通过这种方式设置,titleLabel的宽度显示为0,因此图像不会设置在按钮上的正确位置。

我对于为什么会发生这种情况的想法可能是因为我从来没有以编程方式设置文本,只是在故事板中,尽管这实际上没有意义,但这只是我得到的。

有人在这里看错了吗?如果您需要任何其他代码,请告诉我,我可以发布相关信息。

1 个答案:

答案 0 :(得分:0)

你什么时候这样做?也许你是在加载资源之后但在设置所有元素的帧之前尝试这样做的。