【问题标题】:UIButton Autolayout size settingUIButton 自动布局大小设置
【发布时间】:2016-06-04 12:18:40
【问题描述】:

我在视图中放置了一个UIButton控件,按钮中设置了一个大背景图片,假设图片大小为600 x 300,按钮大小为100 X 40,现在我要添加限制按钮宽度 >= 100 和

问题是按钮宽度总是拉伸到 200 而不是实际标题宽度,因为背景图像太大超过 200 像素。但我想要的是使宽度适合背景图片以外的标题。

我尝试使用 setContentHuggingPriority 和 setContentCompressionResistancePriority 降低按钮图像视图的水平优先级,但不幸的是它不起作用。请帮忙!!!

【问题讨论】:

    标签: ios uibutton ios-autolayout


    【解决方案1】:

    您应该为按钮的宽度约束创建一个 IBOutlet,然后您可以这样说:

    self.buttonWidthConstraint.constant = button.titleLabel?.sizeThatFits(button.frame.size).width
    

    或者如果你在objective-c中需要它:

    self.buttonWidthConstraint.constant = [self.button.titleLabel sizeThatFits:self.button.frame.size].width;
    

    【讨论】:

    • 什么是.buttonWidthConstraint.constant?我没有找到任何这样的财产。还是您的意思是为按钮添加宽度约束?我做到了,我已经按照我的描述为按钮添加了 >= 100 和
    • “你应该为你添加的宽度约束创建一个 IBOutlet”。例如,我称它为“buttonWidthConstraint”。您可以通过控件从视图层次结构拖动到您的类来创建 IBOutlet。
    • 我明白你的意思。好吧,虽然我不想拥有部分代码的故事板部分,但这是迄今为止最好的解决方案。谢谢。顺便说一句, sizeThatFits(button.frame.size) 不会完成这项工作。它应该是 title.boundingRectWithSize(...).width + button.titleLabel.frame.origin.x + title inset 左右。请更改它,我会将其标记为答案。
    • “不会做这份工作”是什么意思?
    • 它没有正确改变宽度,因为 button.frame.size 受背景图像而不是标题的影响,所以在我的情况下 button.frame.size.width = 200 ,而 sizeThatFits 只是设置标题标签宽度到按钮宽度。这不是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多