首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLayoutConstraints未设置( setting 3)

NSLayoutConstraints未设置( setting 3)
EN

Stack Overflow用户
提问于 2017-05-14 23:33:54
回答 1查看 208关注 0票数 1

我使用来自核心数据的文本数据来调整消息容器框架的大小,但是,如果这样做有意义的话,框架的设置速度似乎不够快。我试着将代码放在覆盖layoutSubviews和setupViews中,但没有结果。

下面是设置messageContainer框架的代码

代码语言:javascript
复制
    if let messageText = cell?.text {
        let size = CGSize(width: 100, height: 40)
        let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
        let estimatedFrame = NSString(string: messageText).boundingRect(with: size, options: options, attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 12)], context: nil)



        messageContainer.translatesAutoresizingMaskIntoConstraints = false
        messageContainer.frame.size.width = estimatedFrame.width
        messageContainer.frame.size.height = estimatedFrame.height



        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .left , relatedBy: .equal, toItem: messageContainer, attribute: .left, multiplier: 1, constant: 5))

        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .width , relatedBy: .lessThanOrEqual, toItem: messageContainer, attribute: .width, multiplier: 1, constant: 0))

        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .height , relatedBy: .lessThanOrEqual, toItem: messageContainer, attribute: .height, multiplier: 1, constant: 0))



    }

现在,文本只是从屏幕上运行,没有包装。

有什么建议吗?

编辑:我已经包含了容器在messageLabel后面应该是什么样子的屏幕截图。这个版本和当前版本的不同之处在于,当前的版本使用的是自动布局,我认为这是导致问题的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-15 01:01:05

问题:

根据您设置的约束,自动布局系统强制执行:

messageLabel.width <= messageContainer.width

但这可能不是你想要的。

解决方案:

你的真正意图是对权利施加限制。

  • 删除宽度约束。
  • 不要设置messageContainer的框架,使用约束。
  • 在单元格的初始化项中设置所有这些。

messageLabel.right <= messageContainer.right

代码:

代码语言:javascript
复制
addConstraint(NSLayoutConstraint(item: messageLabel, attribute: .right , relatedBy: . lessThanOrEqual, toItem: messageContainer, attribute: .right, multiplier: 1, constant: -5))

注意:

请测试它,看看它是否符合您的要求。

首选解决方案:

如果您可以使用以下内容,那就太好了:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43969779

复制
相关文章

相似问题

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