ios - 如何向 UILabel 的固有内容大小添加填充?

标签 ios objective-c uilabel autolayout sizetofit

我在 iOS7 上使用自动布局,我遇到了这样的问题:

我将一个 UILabel 放到一个 UIView 上,并且我正在安排我的自动布局约束,以便标签的 centerX = 父 View 的 centerX。我没有给标签任何宽度限制。当我在运行时设置标签的文本时,标签的宽度刚好足以容纳文本,左右两侧没有边距/填充。我想要的是在左侧和右侧有一些填充,这样文本就不会在标签开始的地方开始。实现这一点的技巧可能是将文本设置为@"文本",但当然这不是正确的方法:)

我怎样才能实现我想要的?

最佳答案

您可以自己扩展 UILabel 并覆盖 intrinsicContentSize。请确保您也设置了 textAlignment = NSTextAlignmentCenter。

-(CGSize)intrinsicContentSize{
    CGSize contentSize = [super intrinsicContentSize];
    return CGSizeMake(contentSize.width + 50, contentSize.height);
}

swift 5.0

open override var intrinsicContentSize: CGSize {
    let size = super.intrinsicContentSize
    return CGSize(width: size.width + 16, height: size.height)
}

这可能只适用于只有一行文本要显示的情况。

关于ios - 如何向 UILabel 的固有内容大小添加填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874203/

相关文章:

ios - 将 View Controller 添加到 UIPageViewController

ios - 如何使用Apple Transport Security保护HTTPS .m4v URL

ios - 在所有 ViewController 中保留 UITabBar 的正确方法是什么(不想使用 UITabBarController)

objective-c - 使用基本类型的属性

swift - 不能删除具有字符串插值的文本?

ios - 如何在 iPhone 应用程序中安装 twitter + oauth 的 libOAuth.a

ios - 无论如何要在两个 View 之间使用 CATransition 时删除淡入淡出?

objective-c - ARC 相当于自动释放?

c# - 使用 MonoTouch 显示多色字符串。 Three20、Nimbus 还是 UIWebView?

ios - 现在可以使用带有 adjustmentFontSizeToFitWidth 的多行 UILabel 吗?