首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置为零或"“时UILabel文本属性会使UILabel从视图中消失(Swift / Autolayout/ iOS9.1)

设置为零或"“时UILabel文本属性会使UILabel从视图中消失(Swift / Autolayout/ iOS9.1)
EN

Stack Overflow用户
提问于 2015-10-28 04:36:03
回答 1查看 4.8K关注 0票数 9

我正在读斯坦福冬季2015 Swift/iOS课程,在做作业时,我遇到了一种我想改变的行为。

我使用Autolayout,如视频中所述(使显示引脚到前导和后置视图边缘),计算器应用程序“显示”UILabel很好,初始值为0,每当用于设置它的值(字符串)是非零和非“。

如果是零或"",则整个UILabel消失。我试图做的是“清除”显示时,当没有值显示或一个不正确的计算结果为零。

一般情况下谁来处理这件事有什么建议吗?“清除”一个UILabel而不改变它的屏幕尺寸?

编辑(谢谢罗布)的UILabel有以下约束1。选择-点击拖动-左包含UIView,选择“引导”的东西(上下班还不能检查确切的措辞。2.与(1)相同的方法,除了拖动到右侧边缘并选择“拖尾”3。选项单击-拖到视图顶部,选择“垂直”菜单选项。4.与(3)相同,只是拖动到图形用户界面上的UIButton下面的UILabel。

有了这些设置,当标签包含一个数字时总是可见的,并且(如果理解的话,会给它着色以验证)延伸到屏幕上,即使文本没有。

只要UILabel的内容不是空的,布局在轮廓和景观上看起来是正确的。如果是空的,它似乎“收缩到适合”那么多,下面的按钮被移动到顶部。

从90年代中期开始,我是一个C++开发人员,但我的UI经验很少,而且在iOS/Swift开发方面的经验也不超过几周。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-01-31 13:15:05

使用在UILabel中分配的自定义Interface Builder >> Identity inspector >> Custom Class >> Class类覆盖UILabel内部内容大小。

无需创建任何多余的自动布局约束。

斯威夫特

代码语言:javascript
复制
class UILabelNonCompressible: UILabel
{
    private static let NonCompressibleInvisibleContent = " "

    override var intrinsicContentSize: CGSize
    {
        if /* zero-width */ text == nil ? true : text!.isEmpty
        {
            // prefer mirror-and-calculate over modify-calculate-restore due to KVO
            let doppelganger = createCopy()

            // calculate for any non-zero -height content
            doppelganger.text = UILabelNonCompressible.NonCompressibleInvisibleContent

            // override
            return doppelganger.intrinsicContentSize
        }
        else
        {
            return super.intrinsicContentSize
        }
    }
}

您还需要"How do copy for UILabel?"

代码语言:javascript
复制
extension UILabel
{
    func createCopy() -> UILabel
    {
        let archivedData = NSKeyedArchiver.archivedData(withRootObject: self)
        return NSKeyedUnarchiver.unarchiveObject(with: archivedData) as! UILabel
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33382984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档