首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自动布局- UIButton的固有大小不包括标题插入

自动布局- UIButton的固有大小不包括标题插入
EN

Stack Overflow用户
提问于 2013-07-23 09:52:53
回答 7查看 78.2K关注 0票数 222

如果我有一个使用自动布局的UIButton,它的大小可以很好地调整以适应它的内容。

如果我将图像设置为button.image,则内部大小似乎再次说明了这一点。

但是,如果我调整按钮的titleEdgeInsets,布局不会考虑到这一点,而是截断按钮标题。

我如何确保按钮的固有宽度考虑到了插入?

编辑:

我正在使用以下内容:

代码语言:javascript
复制
[self.backButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)];

目标是在图像和文本之间添加一些分隔。

EN

回答 7

Stack Overflow用户

发布于 2013-07-23 17:26:41

为什么不覆盖UIView上的intrinsicContentSize方法呢?例如:

代码语言:javascript
复制
- (CGSize) intrinsicContentSize
{
    CGSize s = [super intrinsicContentSize];

    return CGSizeMake(s.width + self.titleEdgeInsets.left + self.titleEdgeInsets.right,
                      s.height + self.titleEdgeInsets.top + self.titleEdgeInsets.bottom);
}

这应该告诉自动布局系统,它应该增加按钮的大小,以允许插入并显示全文。我不在我自己的电脑前,所以我没有测试过这个。

票数 100
EN

Stack Overflow用户

发布于 2013-07-23 11:06:27

您还没有指定如何设置插入,所以我猜您使用的是titleEdgeInsets,因为我看到了与您相同的效果。如果我使用contentEdgeInsets,它可以正常工作。

代码语言:javascript
复制
- (IBAction)ChangeTitle:(UIButton *)sender {
    self.button.contentEdgeInsets = UIEdgeInsetsMake(0,20,0,20);
    [self.button setTitle:@"Long Long Title" forState:UIControlStateNormal];
}
票数 93
EN

Stack Overflow用户

发布于 2015-03-06 01:53:32

斯威夫特做到了这一点:

代码语言:javascript
复制
extension UIButton {
    override open var intrinsicContentSize: CGSize {
        let intrinsicContentSize = super.intrinsicContentSize

        let adjustedWidth = intrinsicContentSize.width + titleEdgeInsets.left + titleEdgeInsets.right
        let adjustedHeight = intrinsicContentSize.height + titleEdgeInsets.top + titleEdgeInsets.bottom

        return CGSize(width: adjustedWidth, height: adjustedHeight)
    }
}

爱你斯威夫特

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17800288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档