我在tableView的头中添加了一个视图,它由imageView和textView组成,其中imageView在左上角左对齐,而textView在imageView上延伸到屏幕右侧,如下所示。
textView可以包含动态内容,并具有如下设置的排除路径:
let imagePath = UIBezierPath(rect: imageView.frame)
self.textView.textContainer.exclusionPaths = [imagePath]
我已经禁用了文本视图的滚动,并在标题视图中设置了以下约束:
文本视图:左-8像素,右-8像素,上-0像素,下-8像素
图像视图:左侧-8像素,宽度-100像素,高度100像素,顶部-8像素,底部-大于或等于8像素
我在textView中填充了动态文本之后添加了以下代码:
if let headerView = self.tableView.tableHeaderView {
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var headerFrame = headerView.frame
if height != headerFrame.size.height {
headerFrame.size.height = height
headerView.frame = headerFrame
self.tableView.tableHeaderView = headerView
}
}
这会调整标题的大小。但是,当textView的文本少于图像的高度时,视图的大小会增大。
三行文本示例:
六行文本示例:
足以传递imageview的文本示例:
有人知道为什么会这样吗?
3条答案
按热度按时间jm2pwxwz1#
我有一个解决这个问题的方法,因为我自己也遇到过这个问题:)你看,我试图做一些非常类似的事情,其中一个
UITextView
的文本应该避免它左边的UIImageView
。我的代码如下:我的成绩不太好:
正如您所看到的,这个问题依赖于
ticketContent
UITextView
的CGRect
作为其排除路径,因为后者假定给定的CGRect
被纠正到它自己的帧,而不是它的超级视图的。修复非常简单,需要使用自iOS 2.0问世以来就存在的API:
我们在这里所做的是将
UIImageView
的框架转换到UITextView
的坐标系,从而从UITextView
的Angular 提供正确的排除路径。添加的偏移量只是为了对齐我的UITableViewCell
的所有三个文本UIView
。convert()
是一个UIView
方法。正如您所看到的,文本现在很好地环绕在
ticketProfilePicture
UIImageView
周围。希望这对你有帮助。
yjghlzjz2#
对于任何使用自动布局的用户,请确保在viewDidLayoutSubviews()中添加exclusionPathFrame。
2guxujil3#