2016-03-31 7 views
0

私はiOSの新機能です。私はチャットアプリケーションを作っています。下の画像はテーブルメッセージです。各セルでは、私はmessageViewのための4つのコーナーを設定し、それは私がいくつかの私のメッセージはわずか3つのコーナーを持って欲しい、今すぐ正しいフレキシブルビューのUIBezierPathによるコーナー(コンテンツの幅の高さを表示できるビュー)

self.messageView.layer.cornerRadius = 10.0; 

enter image description here

を表示(左上、左下、右下)いくつかのメッセージは、facebookメッセンジャーのような3つのコーナー(左下、右下、右上)を持っています。
ですので、各セルにはUIBezierPathというユーザーがいます。
しかし、私のメッセージは完全な内容を表示しません。 しかし、上下にスクロールすると、セルが再作成され、正しく表示されます。 私はself.messageViewためUIBezierPathによってコナーズを設定すると、self.messageViewはまだドローを終了していない:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.messageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)]; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = self.bounds; 
maskLayer.path = maskPath.CGPath; 
self.messageView.layer.mask = maskLayer; 

私は私の問題だと思います。だからself.messageView.boundsは間違った値を返します。
しかし、私はそれを修正する方法がわかりません。

ご協力いただければ幸いです。

+0

'sizeToFit'を試しましたか? – schmidt9

+0

@ schmidt9 'sizeToFit'をどこに置くべきか教えてください。 –

+0

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView/sizeToFit – schmidt9

答えて

1

あなたが-layoutSubviewsメソッドで男を更新していると思われていません。
追加されたレイヤーはビューの処理方法を知らないため、レイヤーを適用しているビューのlayoutSubviewsでサイズを変更する必要があります。
マスクパスへの参照を保持して更新します。その前に常にsuperを呼び出します。

+0

ありがとうございます。私は 'layoutSubView'内の角を更新することでそれを解決します –

1

お試しください!

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.messageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)]; 

    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
    // maskLayer.frame = self.bounds; 

    maskLayer.frame = self.messageView.bounds; // Try this. 
    maskLayer.path = maskPath.CGPath; 
    self.messageView.layer.mask = maskLayer; 

enter image description here enter image description here

+0

ありがとうございます。私はそれを試しましたが、同じ問題 –

+0

私はそれを試しました。それは正常に動作しています..これを追加します。 [self setNeedsDisplay]; –

+0

私の問題はテーブルビューのセルにあり、セルは高さを増やす可能性があります。あなたのイメージでは、あなたのビューの高さは固定されています –

関連する問題