我想知道哪个是计算和获得UIView
将动态绘制的最终大小的更好方法。例如,我有一个超级视图,其中将绘制一堆视图。我需要这些视图的尺寸来正确布局它们,但考虑到它们将显示的数据,它的最终大小是动态的。
这样,我必须发布一个类方法来计算并根据要显示的数据返回视图的大小,以创建具有适当框架的视图。之后,在超级视图中我正确地布局了视图,而在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 方法在绘制后返回最终大小,例如 NSString's drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment:
,它在使用该参数绘制文本后返回文本的最终大小。
我怎样才能实现这样的目标?我不喜欢当前的解决方案,我认为它是错误的。
谢谢你。