有没有办法缩放文本,以便它占用接近相同的屏幕空间,无论设备大小是多少?我发现,与iPhone相比,iPad尺寸设备上的文字相对于屏幕尺寸来说太小了.以下是我正在寻找的一个例子.请注意,文本百分比大小与设备屏幕大小相似.

小智 28
要在您拥有的标签上设置约束,请参阅以下链接:如何使背景图像在swift中缩放到屏幕尺寸?.我知道你可能没有使用Swift(我使用的是Objective-C),但第一个答案显示了如何在故事板中使用它.做同样的事情,但对于标签.然后,请参阅下图,将标签的自动缩小选项从"固定字体大小"更改为"最小字体比例"(参见下图).希望这可以帮助!

我有自己的解决方案而且不是一次点击,但我发现它非常值得.
测试不同屏幕尺寸的字体大小,记录字体大小和最相关的其他尺寸.
这就是我的意思......
我从一个普通的iPad屏幕开始,选择一个有效的字体大小.
因为我知道屏幕的整个高度将决定字体大小的舒适度,所以我会记录字体大小以及整个屏幕高度.
因此字体大小为50,高度为1024.
然后,我切换到iPhone SE
这非常残酷,所以我修改了字体大小:
录制后,字体大小为25,高度为568.
打破计算器应用程序并找到一个常量,它将字体大小与高度(在我的情况下)相关联,给出或略微一点.
这就是我的意思:
我知道50件作品用1024而25件用作568件.
除以50/1024给你.048828125.
乘以568等于27.734375,这对SE来说有点胖.
重复该过程,但使用SE的值进行分割,产生.0440140845,并检查iPad的高度产生45的字体大小,对于强大的iPad屏幕来说有点小.
所以我将商数分成中间,导致数字大约为0.46.
连接标签并使用此编号以编程方式更改其字体大小.
首先,将标签拖到出口集合中.我将我的连接命名为"headerLabels",因为它们都位于屏幕的顶部.
然后,你可以偷我的代码,但不要用它赚太多钱;)
// Outlet collection of labels
@IBOutlet var headerLabels: [UILabel]!
// Who needs a short variable name when we can have a
// painfully lengthy one to describe the number we calculated?
let relativeFontConstant:CGFloat = 0.046
override func viewDidLoad() {
super.viewDidLoad()
// Should be in the viewDidLoad so it can load the same time as
// the view does.
// apply a font size to all the labels.
for label in headerLabels {
// multiply the height we based it on of the entire view
// to the number we calculated
label.font = label.font.withSize(self.view.frame.height * relativeFontConstant)
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有任何问题,评论,赞美或侮辱让我知道:)
我有同样的问题,我需要按比例缩放文本以及屏幕大小增加.
自适应大小调整非常有限,因为您只能为大小类设置字体大小.拥有两个宽度选项的字体大小,紧凑和规则不适合我.
我写了一个小的lib,它为UILabel和UITextView处理不同屏幕尺寸的自动字体缩放.
您可以全局设置缩放,也可以设置UILabel和UITextView的特定实例.
在这里找到它:AMXFontAutoScale
我在 viewDidLoad 函数中使用以下代码,表现得不错:
(请注意,屏幕边界以“点”而不是“像素”为单位)
// Set the clock font size according to the height.
// Design was done on iPhone XR with height of 896 points and font size of 98.
if (UIScreen.main.bounds.height != 896). // Only need code if not on original design size.
{
let scaleFactor: Float = Float(UIScreen.main.bounds.height) / 896.0
let fontSize = CGFloat(98.0 * scaleFactor)
self.clock.font = self.clock.font.withSize(fontSize)
}
Run Code Online (Sandbox Code Playgroud)
这是使用“Helvetica Neue”字体,它是一种固定宽度的字体。由于某种原因,它在较大的设备上并没有完全放大,所以仍然比 iPad 上的目标小一点,但已经足够接近了。
存在可用的纵横比限制。将其添加到您的标签中。用于将标签固定到位的左侧和顶部边距的限制应该可以消除编译器警告。
正如 @VatsalManot 提到的,首先要学习自适应大小调整。这是一个很好的链接:
http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial
希望这可以帮助!:)