swift UIButton框架大小不更新以支持设置中增加的字体大小

smdncfj3  于 2023-09-30  发布在  Swift
关注(0)|答案(2)|浏览(140)

我有一个基本的UIButton,具有以下约束:

我有一些基本的trailing和top约束,我有一个>= width和height约束设置为48,因为我希望48是按钮的最小宽度和高度。
我的目标是让按钮中的文本随着用户从设置中更改字体大小而变大。
按钮中的文本似乎在增加大小,但是框架似乎没有更新以适应这种增加。

这就是我的意思设置字体大小从控制面板

然而,如果我退出应用程序并再次启动它,框架大小计算正确,并在更改文本大小从控制面板似乎使字体大小在按钮缩小和适当增长。

似乎需要首先确定最大宽度/高度。
在代码中,我甚至设置了:

skipButton.titleLabel?.font = UIFont.font(forTextStyle: .body, fontName: .suecaNanoRegular, size: 14)
skipButton.titleLabel?.adjustsFontForContentSizeCategory = true

如何让UIButton在运行时支持动态字体大小。
这里是我的其他按钮设置,如果这有助于调试。

mrphzbgm

mrphzbgm1#

这似乎对我有用……
在脚本中添加一个按钮,只修改3个属性

  • 样式:默认
  • 标题:跳过
  • 背景:黄色(这样我们就可以看到运行时的帧)

限制条件:

添加了一个随机字体到我的项目-“Gotham-BookItalic.otf”
View Controller类:

class DynamicFontVC: UIViewController {
    
    @IBOutlet var skipButton: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        guard let customFont = UIFont(name: "Gotham-BookItalic", size: 14.0) else {
            fatalError("Could not load font!")
        }
        
        skipButton.titleLabel?.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: customFont)
        skipButton.titleLabel?.adjustsFontForContentSizeCategory = true
    }
    
}

测试结果:

编辑--将Control Alignment设置为Trailing / Top:

snz8szmq

snz8szmq2#

问题是你的字体本身不是动态的。
删除有关标题标签的代码,并将情节提要中的按钮重新配置为Plain样式而不是Default样式,并给予动态字体设置,如以下屏幕快照所示:

按钮标题的字体大小将按照您的预期进行。

相关问题