我正在使用drawRect:
来绘制形状。我必须调用此方法并在方向更改时重绘形状,所以我想如果有一种方法可以在调用drawRect:
时自动调用layoutSubviews()
。
谢谢。
答案 0 :(得分:5)
您可以将视图contentMode
设置为.redraw
。
每当视图的边界发生变化时,这将调用setNeedsDisplay
(因此drawRect
),因此也会在轮换时调用(假设您已设置{{3这样视图的边界在旋转时会发生变化。)
答案 1 :(得分:2)
首次显示视图或事件时调用此方法 发生使视图的可见部分无效。你永远不应该 直接自己调用这个方法。要使部分视图无效, 从而导致该部分被重绘,调用setNeedsDisplay或 改为setNeedsDisplayInRect:方法。
就是这样。只需在相应的视图中调用setNeedsDisplay
即可。
答案 2 :(得分:0)
在viewDidLoad()函数中输入:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)
然后添加以下功能:
func rotated()
{
if(UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation))
{
print("landscape")
// Your drawRect function here
}
if(UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation))
{
print("Portrait")
// Your drawRect function here
}
}