如何调用drawRect:当layoutSubviews在ios中调用时

问题描述 投票:1回答:3

我正在使用drawRect:来绘制形状。我必须调用此方法并在方向更改时重绘形状,所以我想如果有一种方法可以在调用drawRect:时自动调用layoutSubviews()

谢谢。

ios uiview drawrect layoutsubviews
3个回答
5
投票

您可以将视图的contentMode设置为.redraw

每当视图的边界发生变化时,这将调用setNeedsDisplay(以及drawRect),因此也会在旋转时调用(假设您已经设置了autoresizingMask,以便视图的边界在旋转时发生变化)。


2
投票

从UIView类引用https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView/drawRect

首次显示视图或发生使视图的可见部分无效的事件时,将调用此方法。你永远不应该直接调用这个方法。要使视图的一部分无效,从而导致重绘该部分,请调用setNeedsDisplay或setNeedsDisplayInRect:方法。

而已。只需在适当的视图上调用setNeedsDisplay即可。


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

    }

}
© www.soinside.com 2019 - 2024. All rights reserved.