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

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

下面是我的viewDidLoad:,我在其中添加了自调整大小的单元格代码:
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
}发布于 2016-03-24 18:12:49
看起来你的单元格不够大,不能垂直裁剪你的顶部标签。
EDIT :作者实际上是在处理自定大小的单元格,因此此答案的第一部分不是有效的解决方案。
您可以做的是:
编辑:您的单元格是自定大小的,如果您更改了紧急图像查看约束/大小,则可能是因为标签没有很好地更新其布局。如果是这种情况,您可以尝试更改此UILabel子类的标签自定义类:
对象-C :
@implementation AutoLayoutLabel
- (void)layoutSubviews {
[self setNeedsUpdateConstraints];
[super layoutSubviews];
self.preferredMaxLayoutWidth = CGRectGetWidth(self.bounds);
}
@end在Swift中,它类似于:
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项目中的内容复制到您的项目中。
发布于 2016-03-24 18:59:29
好的,下面是基于多标签行实现动态表格高度的步骤。我已经在我们的swift应用程序的表视图中实现了这个功能。按照以下步骤操作,它将会起作用:
- estimatedHeightForRowAtIndexPath : return 50 (or the minimum height you require for your table)
- heightForRowAtIndexPath : return UITableViewAutomaticDimension ( this was introduced with iOS 8)
- 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.
当它工作的时候让我知道!
https://stackoverflow.com/questions/36197422
复制相似问题