簡體   English   中英

如何將自定義貝塞爾曲線路徑應用於UITableViewCell內的UITextView

[英]How to apply custom bezier path to a UITextView inside a UITableViewCell

我正在使用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完成此操作,因此在代碼中添加以下行: self.animalBioTextView.bounds=self.bounds

  • 由於textview與單元格相鄰,因此我應該能夠“輕松地”使用子視圖的邊界並將它們傳遞給textView。 但是顯然,界限是關於孩子們本身的。 那么,如何獲得相對於UITableViewCell的坐標? 就我而言,這是self

一方面,您忽略了考慮坐標系。 其他觀點的界限是彼此有關的。 例如,它們的邊界原點都是(0,0) 但是,必須根據文本容器自身的邊界原點(如投影到現實空間中)設置排除路徑。 其他視圖的原點都不太可能全部位於文本視圖的文本容器的左上角! 因此,您需要將所有這些矩形轉換為文本容器自己的坐標系。

(還要記住,如果文本視圖是可滾動的,則情況會更加復雜,因為其他視圖相對於滾動的文本內容的位置會隨着用戶滾動而改變,因此您必須將其納入計算中的帳戶,然后再次更改排除路徑。)

您可以使用convertRect:fromView:獲取相對於文本視圖的坐標。 例如:

CGRect animalImageRect = [self.animalBioTextView convertRect:self.animalImageView.bounds fromView:self.animalImageView];
UIBezierPath *imagePath = [UIBezierPath bezierPathWithRect:animalImageRect];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM