我有一个使用CAShapeLayers将图片绘制到自身的UIView子类。我希望绘图适应任何大小的UIView是由AutoLayout。我给了它一个drawGraph()
函数,该函数从.bounds.size
获取它的当前大小,然后绘制一张适合的图片。
我从调用容器UIViewController的viewDidLoad()
中的绘图函数开始,但在这一点上布局还没有发生,所以它在故事板中有任何界限。
我试着从视图控制器的viewDidLayoutSubviews()
调用它,但这也不是完全令人满意。它被调用了两次:第一次是来自故事板的边界,第二次是更新(正确)的边界。中间有一个暂停,所以绘制和重绘对用户是可见的。
如何判断UIView是否已应用其布局约束并准备提供准确的尺寸?
发布于 2016-08-08 06:34:29
你应该在UIView
的drawRect(rect: CGRect)
中绘制它。一旦视图需要在屏幕上绘制,这个函数就会被调用。
发布于 2016-08-08 06:57:29
在我的UIView子类中,我通常通过重写layoutSubview()
方法来编写与布局相关的代码。如果我没记错的话,它比drawRect(rect: CGRect)
更轻量级。
但是,如果您真的只做绘图,那么您可能应该使用drawRect(rect: CGRect)
,因为当您创建一个新的UIView子类时,Xcode建议您这样做。
https://stackoverflow.com/questions/38822532
复制相似问题