我在想什么是更好的方式来计算和获得动态绘制的UIView
的最终尺寸。例如,我有一个超级视图,其中将会绘制一堆视图。我需要这些视图的维度来正确地布局它们,但其最终大小是动态的,并考虑到它们将显示的数据。哪个更好的方法来获得UIView的最终大小?
这样,我必须发布一个类方法来计算并根据要显示的数据返回视图的大小,以创建具有适当框架的视图。之后,在superview中,我正确地布置了视图,并且在子视图的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的drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment:
,这与参数绘制之后返回文本的最终大小。
我该如何实现这样的目标?我不喜欢目前的解决方案,我认为这是错误的。
谢谢。
这听起来像一个布局问题,可以使用适当的自动布局或支柱/弹簧设置来解决。你有没有考虑过使用它而不是试图计算所有这些值? – lehn0058 2013-04-30 14:11:58