按屏幕大小缩放文本标签

Jef*_*rey 24 xcode ios swift

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

在此输入图像描述 在此输入图像描述

小智 28

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

更改字体大小


bea*_*a13 9

我有自己的解决方案而且不是一次点击,但我发现它非常值得.

步骤1:

测试不同屏幕尺寸的字体大小,记录字体大小和最相关的其他尺寸.

这就是我的意思......

我从一个普通的iPad屏幕开始,选择一个有效的字体大小.

在此输入图像描述

因为我知道屏幕的整个高度将决定字体大小的舒适度,所以我会记录字体大小以及整个屏幕高度.

在此输入图像描述

因此字体大小为50,高度为1024.

然后,我切换到iPhone SE

在此输入图像描述 在此输入图像描述

这非常残酷,所以我修改了字体大小:

在此输入图像描述

录制后,字体大小为25,高度为568.

第2步:

打破计算器应用程序并找到一个常量,它将字体大小高度(在我的情况下)相关联,给出或略微一点.

这就是我的意思:

我知道50件作品用1024而25件用作568件.

除以50/1024给你.048828125.

乘以568等于27.734375,这对SE来说有点胖.

重复该过程,但使用SE的值进行分割,产生.0440140845,并检查iPad的高度产生45的字体大小,对于强大的iPad屏幕来说有点小.

所以我将商数分成中间,导致数字大约为0.46.

第3步:

连接标签并使用此编号以编程方式更改字体大小.

首先,将标签拖到出口集合中.我将我的连接命名为"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)

如果您有任何问题,评论,赞美或侮辱让我知道:)


Ale*_*scu 5

我有同样的问题,我需要按比例缩放文本以及屏幕大小增加.

自适应大小调整非常有限,因为您只能为大小类设置字体大小.拥有两个宽度选项的字体大小,紧凑和规则不适合我.

我写了一个小的lib,它为UILabelUITextView处理不同屏幕尺寸的自动字体缩放.

您可以全局设置缩放,也可以设置UILabelUITextView的特定实例.

在这里找到它:AMXFontAutoScale


Kam*_*hir 5

1.选择标签并为其打开属性检查器 选择用户界面(按钮,标签等)

2.单击“按字体加符号”,选择“常规”的宽度和高度,然后单击“添加变体” 单击字体侧面的+图标,选择宽度和高度常规

3.将会出现另一个字体字段,它将代表ipad /大屏幕/大屏幕错觉的字体(滚动视图)

将会出现另一个字体字段,该字段用于大屏幕(ipad或通过滚动视图产生的大屏幕错觉等)

4.选择所需的ipad字体

选择要在ipad上显示的所需大小和字体


Dav*_*ard 5

我在 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 上的目标小一点,但已经足够接近了。


GoG*_*een 1

存在可用的纵横比限制。将其添加到您的标签中。用于将标签固定到位的左侧和顶部边距的限制应该可以消除编译器警告。

正如 @VatsalManot 提到的,首先要学习自适应大小调整。这是一个很好的链接:

http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

希望这可以帮助!:)