UIView
動的に描画されるan の最終的なサイズを計算して取得するより良い方法はどれか疑問に思っています。たとえば、一連のビューが描画されるスーパービューがあります。これらのビューを適切にレイアウトするには、それらのビューのサイズが必要ですが、最終的なサイズは、表示されるデータを考慮して動的です。
このように、表示するデータに応じてビューのサイズを計算して返すクラス メソッドを公開し、適切なフレームでビューを作成する必要があります。その後、スーパービューでビューを正しくレイアウトしdrawRect
、サブビューでそのクラス メソッド コードをほぼ複製します。これらの計算を適切に描画する必要があるためです。
例:
+ (CGSize)sizeForTopText:(NSString *)topText
leftText:(NSString *)leftText
showingIcon:(BOOL)showIcon {
// Here I compute all this data taking into account font sizes,
// icon image size, etc, code that will be almost cloned in drawRect:
}
// In the superview
CGSize myViewSize = [MyView sizeForTopText:@"topText" leftText:@"leftText" showingIcon:NO];
MyView *theView = [[MyView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, myViewSize.width, myViewSize.height)];
一部の Cocoa メソッドは、描画後に最終的なサイズを返すことがわかります。たとえば、NSStringdrawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment:
は、そのパラメーターでテキストを描画した後にテキストの最終的なサイズを返します。
どうすればそのようなことを達成できますか? 私は現在の解決策が好きではありません。それは間違っていると思います。
ありがとうございました。