将按钮的fontsize设置为最大值以适合宽度和高度

时间:2018-01-16 09:22:06

标签: ios swift xcode

我正在使用Xcode和Swift为iOS创建一个应用程序。

我有一个按钮,它在宽度上填充屏幕,其高度与根视图成比例。我希望按钮的文字尽可能大,同时仍然适合宽度和高度。我尝试设置一个非常大的字体大小(100),行设置为1并调整FontSizeToFitWidth为true。效果是,它使字体大小填充宽度,如果文本不再适合(在我的平板电脑上以纵向模式的情况),它用“...”替换部分文本

同样在横向模式下,虽然大部分文字完全适合高度,但斜线大于高度,部分位于按钮之外(位于底部)。

2 个答案:

答案 0 :(得分:0)

最佳做法是在按钮下方放置标签。并使按钮透明以填充所有标签。 - 用正确的约束做到这一点。 我写了一个小视频如何实现 -

https://www.screencast.com/t/u8gb4f5YaBd

答案 1 :(得分:0)

您必须使用透明按钮并在该按钮后面添加标签。 没有其他方法然后命中并尝试。您必须设置字体并检查它是否适合您的宽度。这是递归函数的一些例子。 您必须设置label.lineBreakMode = .byCharWrappinglabel.numberOflines = 0

func adjustSize() {
     let font = label.font
     label.font = UIFont(name: font!.fontName, size: font!.pointSize + 1)
     let constraintRect = UIScreen.main.bounds.size
     let boundingBox = label.text!.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSAttributedStringKey.font: label.font], context: nil)
     if boundingBox.width < constraintRect.width {
        adjustSize()
     }
}

Potrait Mode

Landscape Mode