【问题标题】:iOS - creating proportional button, labels, etc with autolayoutiOS - 使用自动布局创建比例按钮、标签等
【发布时间】:2023-03-12 15:31:01
【问题描述】:

我正在尝试使用自动布局创建游戏菜单。我真的希望这取决于屏幕的大小。例如,如果 UILabel 在 iphone 上的字体为 12,那么在 ipad 上它可能应该是 24 或 30。

我使用约束使元素本身根据屏幕大小变大,但 UIButton 上的标题不会根据按钮大小进行缩放。

我知道您可以根据尺寸等级创建元素,但这是最好的方法吗?我是否应该重新制作按钮两次,以便我可以增加一个按钮与另一个按钮的字体大小?

我实际上已经尝试过这种方法,但是当我将我的按钮复制到另一个尺寸类时,它会失去所有相关的约束..

完成这样的事情的最佳方法是什么。我需要跨设备的相同布局,但不只是以相同的方式隔开。我需要实际放大的东西。

【问题讨论】:

    标签: ios uibutton uikit uilabel autolayout


    【解决方案1】:

    您需要设置按钮 titleLabel 的字体大小以根据您想要的比例进行调整...我建议使用比例为 12 的屏幕大小按比例增长。例如,屏幕尺寸为两倍大(宽度为两倍)的设备将具有两倍大的字体。你的比例是 320:screenWidth 并乘以字体大小 12。

    [myButton.titleLabel setFont:[UIFont systemFontOfSize:(12.0f*(self.view.frame.size.width/320.0f))]];

    【讨论】:

    • 如果你需要在多个按钮上使用它的子类。
    • 所以这需要以编程方式完成.. IB 没有什么可以解决这个问题?我可以按照您建议的方式对其进行子类化,但我必须为 UILabel、UIButton 等创建子类才能放大文本
    • 有类似自动调整字体大小以适应 UILabel 的宽度(可能还有按钮标题标签)。我不记得确切的方法名称,请查看文档! (我认为它也是以编程方式完成的,但至少你不需要子类,因为你可以只说 for (UILabel *label in [self.view subviews]) { 并在那里应用它,循环遍历所有嵌套的子视图
    • 确保检查返回的 NSObject 是 UILabel 类类型
    • 我认为界面生成器应该从现在开始为我做所有事情 :( 再也不用编程了.. 我想不会
    猜你喜欢
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    相关资源
    最近更新 更多