0

我正在使用 UITableViewCell。该单元格包含许多图像、一个标签和一个 UITextView。我希望 UITextView 与其他视图一起绘制作为其排除路径。所以在我的 MyUITableViewCell 类中,我在方法中有以下代码awakeFromNib

UIBezierPath *image =[UIBezierPath bezierPathWithRect:self.animalImageView.bounds];
UIBezierPath *label =[UIBezierPath bezierPathWithRect:self.animalTitleView.bounds];
UIBezierPath *rating =[UIBezierPath bezierPathWithRect:self.ratingOfAnimal.bounds];

self.animalBioTextView.bounds=self.bounds;//resize textview to fill table cell; exclusions will come later
self.animalBioTextView.textContainer.exclusionPaths=@[image, label, rating];//apply exclusions
NSLog(@"Bezier path set");

这些编辑似乎都没有生效。

BWT:我在 UITableView 内的故事板中声明了 TableViewCell。然后我将情节提要单元链接到 MyUITableViewCell,然后从那里开始。澄清一下:一切正常;除了现在我要自定义 textContainer。

- 更新 -

我认为我的代码示例显示了我想要做的事情,这里还有一些解释:

  • 我希望 textview 在所有方面都与 TableViewCell 连续。由于我无法在情节提要中完成此操作,因此我在代码中添加了以下行:self.animalBioTextView.bounds=self.bounds

  • 由于 textview 与单元格连续,那么我应该能够“轻松”使用子视图的边界并将它们传递给 textView。但显然,界限是关于孩子们自己的。那么如何获得相对于 UITableViewCell 的坐标呢?在我的情况下是self

4

2 回答 2

0

一方面,您忽略了考虑坐标系。其他观点的界限都是相对于它们自己的;例如,它们的边界起源都是(0,0). 但是必须根据文本容器自己的边界原点(投影到现实空间中)设置排除路径;其他视图的来源不太可能都在文本视图的文本容器的左上角!因此,您需要将所有这些矩形转换为文本容器自己的坐标系。

(另外,请记住,如果文本视图是可滚动的,事情会更加复杂,因为其他视图相对于滚动文本内容的位置会随着用户滚动而改变,因此您必须考虑到这一点在您的计算中考虑并再次更改排除路径。)

于 2014-08-20T18:06:08.940 回答
0

您可以使用convertRect:fromView:获取相对于文本视图的坐标。例如:

CGRect animalImageRect = [self.animalBioTextView convertRect:self.animalImageView.bounds fromView:self.animalImageView];
UIBezierPath *imagePath = [UIBezierPath bezierPathWithRect:animalImageRect];
于 2014-10-03T07:56:26.937 回答