首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UILabel未配置为自动布局

UILabel未配置为自动布局
EN

Stack Overflow用户
提问于 2016-03-24 17:59:14
回答 2查看 115关注 0票数 0

我有一个表格视图应用程序(见图)。某些单元格右侧的横幅是一个布尔值,由用户在Add控制器中决定(由加号提示)。在我的代码中,此横幅被称为紧急图像。顶部标签称为主题标签,底部标签称为截止日期标签。

我遇到的问题是主题标签上的自动布局。在一些标签上,底部被切断了,但在另一些标签上却没有。似乎当有超过一条线时,就会发生断线。自动布局约束如下所示。

下面是我的viewDidLoad:,我在其中添加了自调整大小的单元格代码:

代码语言:javascript
运行
复制
 override func viewDidLoad() {
    super.viewDidLoad()

    let fetchRequest = NSFetchRequest(entityName: "Agenda")
    let sortDescriptor = NSSortDescriptor(key: "subject", ascending: true)
    fetchRequest.sortDescriptors = [sortDescriptor]

    if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext {

        fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
        fetchResultController.delegate = self

        do {
            try fetchResultController.performFetch()
            content = fetchResultController.fetchedObjects as! [Agenda]
        } catch {
            print(error)
        }
    }

    tableView.estimatedRowHeight = 90.0
    tableView.rowHeight = UITableViewAutomaticDimension
}
EN

回答 2

Stack Overflow用户

发布于 2016-03-24 18:12:49

看起来你的单元格不够大,不能垂直裁剪你的顶部标签。

EDIT :作者实际上是在处理自定大小的单元格,因此此答案的第一部分不是有效的解决方案。

您可以做的是:

  • 将顶部标注的垂直压缩阻力设置为1000 (Required)
  • Make两个标注之间的20个垂直间距约束750 (高优先级)约束

编辑:您的单元格是自定大小的,如果您更改了紧急图像查看约束/大小,则可能是因为标签没有很好地更新其布局。如果是这种情况,您可以尝试更改此UILabel子类的标签自定义类:

对象-C :

代码语言:javascript
运行
复制
@implementation AutoLayoutLabel

- (void)layoutSubviews {
    [self setNeedsUpdateConstraints];
    [super layoutSubviews];
    self.preferredMaxLayoutWidth = CGRectGetWidth(self.bounds);
}

@end

Swift中,它类似于:

代码语言:javascript
运行
复制
import UIKit    

class AutoLayoutLabel: UILabel {

    override func layoutSubviews() {
        self.setNeedsUpdateConstraints()
        super.layoutSubviews()
        self.preferredMaxLayoutWidth = CGRectGetWidth(self.bounds)
    }

}

由于您不能发送您的项目,并且我们无法真正看到您的约束,也看不到您的代码设置,因此我为您上传了一个具有相同单元设计的工作测试项目:On the go multiline cell Xcode project

将此Xcode项目中的内容复制到您的项目中。

票数 0
EN

Stack Overflow用户

发布于 2016-03-24 18:59:29

好的,下面是基于多标签行实现动态表格高度的步骤。我已经在我们的swift应用程序的表视图中实现了这个功能。按照以下步骤操作,它将会起作用:

  1. 为表视图实现以下两个委托函数:

代码语言:javascript
运行
复制
- estimatedHeightForRowAtIndexPath : return 50 (or the minimum height       you require for your table)
- heightForRowAtIndexPath : return UITableViewAutomaticDimension ( this was introduced with iOS 8)

  1. 在你的故事板中,你需要这样做:

代码语言:javascript
运行
复制
- Set labels lines to 0. 
- Assuming you have two labels(label(top),Detail label(Below)): Don't assign bottom constraint to your label, assign leading, trailing and Top. Assign bottom constraint to your detail label with leading, trailing and Top and then set vertical spacing for detail label. Hopefully all autolayout errors should not exists by then. 

  1. 构建和验证。

当它工作的时候让我知道!

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

https://stackoverflow.com/questions/36197422

复制
相关文章

相似问题

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