我正在使用drawRect:
来绘制形状。我必须调用此方法并在方向更改时重绘形状,所以我想如果有一种方法可以在调用drawRect:
时自动调用layoutSubviews()
。
谢谢。
您可以将视图的contentMode
设置为.redraw
。
每当视图的边界发生变化时,这将调用setNeedsDisplay
(以及drawRect
),因此也会在旋转时调用(假设您已经设置了autoresizingMask
,以便视图的边界在旋转时发生变化)。
首次显示视图或发生使视图的可见部分无效的事件时,将调用此方法。你永远不应该直接调用这个方法。要使视图的一部分无效,从而导致重绘该部分,请调用setNeedsDisplay或setNeedsDisplayInRect:方法。
而已。只需在适当的视图上调用setNeedsDisplay
即可。
在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
}
}