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 をカスタマイズする必要があります。

- アップデート -

私のコードサンプルは私がやりたいことを示していると思いましたが、まだいくつかの説明があります:

  • テキストビューをすべての面で TableViewCell と連続させたい。ストーリーボードでこれを達成できなかったため、コードに次の行を追加します。self.animalBioTextView.bounds=self.bounds

  • テキストビューはセルに隣接しているため、子ビューの境界を「簡単に」使用してテキストビューに渡すことができるはずです。しかし明らかに、境界は子供たち自身に関するものです。では、UITableViewCell に関する座標を取得するにはどうすればよいでしょうか。私の場合はself

4

2 に答える 2

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 に答える
0

1 つには、座標系について考えるのを怠っています。他のビューの境界は、それぞれのビュー自体に関するものです。たとえば、境界の起点は all(0,0)です。ただし、除外パスは、テキスト コンテナー自体の境界の起点 (実際の空間に投影されたもの) に対して設定する必要があります。他のビューの起点がすべて、テキスト ビューのテキスト コンテナーの正確に左上にある可能性はほとんどありません。したがって、これらすべての四角形をテキスト コンテナー独自の座標系に変換する必要があります。

(また、テキスト ビューがスクロール可能な場合、ユーザーがスクロールすると、スクロールされたテキスト コンテンツに対する他のビューの位置が変化するため、事態はさらに複雑になることに注意してください。そのため、それを考慮する必要があります。計算で考慮し、除外パスを再度変更してください)。

于 2014-08-20T18:06:08.940 に答える