我在tableView头中添加了一个视图,它由imageView和textView组成。图像视图在上角左对齐,文本视图在图像视图上延伸到屏幕的右侧,如下所示。
ios - 如何在表标题 View 内部使用exclusionPaths正确调整textview的大小-LMLPHP
textView可以具有动态内容,并按如下方式设置排除路径:

let imagePath = UIBezierPath(rect: imageView.frame)
self.textView.textContainer.exclusionPaths = [imagePath]

我已经为textview禁用了滚动,并在header视图中设置了以下约束:
文本视图:左-8px,右-8px,上-0px,下-8px
图像视图:左-8px,宽-100px,高100px,上-8px,下-大于或等于8px
在用动态文本填充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
    }
}

它可以调整页眉的大小。但是,当text view的文本小于图像的高度时,视图的大小会增大。
三行文字示例:
ios - 如何在表标题 View 内部使用exclusionPaths正确调整textview的大小-LMLPHP
六行文字示例:
ios - 如何在表标题 View 内部使用exclusionPaths正确调整textview的大小-LMLPHP
足够传递imageview的文本示例:
ios - 如何在表标题 View 内部使用exclusionPaths正确调整textview的大小-LMLPHP
有人知道为什么会这样吗?

最佳答案

我已经解决了这个问题,因为我自己也遇到了这个问题:)
你看,我正试图做一些非常相似的事情,其中UITextView的文本应该避免其左边的UIImageView。我的代码如下:

let ticketProfileExclusionPath = UIBezierPath(roundedRect: ticketProfilePicture.frame, cornerRadius: Constants.ProfilePictureExclusionRadius)
ticketContent.textContainer.exclusionPaths.append(ticketProfileExclusionPath)

我的成绩也不太好:
ios - 如何在表标题 View 内部使用exclusionPaths正确调整textview的大小-LMLPHP
如您所见,该问题依赖于给定给CGRectticketContentUITextView作为其排除路径,因为后者假定给定的CGRect被更正为其自身的帧,而不是其superview的帧。
修复非常简单,并且需要使用一个自出现之日起就存在的API(iOS 2.0):
let exclusionPathFrame = convert(ticketProfilePicture.frame, to: ticketContent).offsetBy(dx: Constants.SystemMargin, dy: Constants.Zero)

我们在这里所做的是将UIImageView的框架转换为UITextView的坐标系,从而从UITextView的角度提供正确的排除路径。添加的偏移量只是对齐我的三个文本。
UITableViewCell是一种UIView方法。
ios - 如何在表标题 View 内部使用exclusionPaths正确调整textview的大小-LMLPHP
如您所见,文本现在很好地环绕在convert()UIView周围。
希望这有帮助。

关于ios - 如何在表标题 View 内部使用exclusionPaths正确调整textview的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41845443/

10-11 19:27