Как вызвать drawRect: когда layoutSubviews запускается в ios
Я использую drawRect:
рисовать фигуры. Я должен вызвать этот метод и перерисовать фигуры при изменении ориентации, поэтому я подумал, есть ли способ вызвать drawRect:
автоматически, когда layoutSubviews()
был вызван.
Спасибо.
3 ответа
Просто установите вид contentMode
в UIViewContentModeRedraw
,
Это вызовет setNeedsDisplay
(и поэтому drawRect
) всякий раз, когда границы представления меняются, и поэтому также будут вызываться при вращении (при условии, что вы настроили autoresizingMask
так что границы вида меняются при вращении).
Из ссылки на класс UIView https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/:
Этот метод вызывается при первом отображении представления или при возникновении события, которое делает недействительной видимую часть представления. Вы никогда не должны вызывать этот метод непосредственно самостоятельно. Чтобы сделать недействительной часть вашего представления и, таким образом, перерисовать ее, вызовите метод 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
}
}