Я использовал drawRect
как viewWillAppear
, проверил некоторые состояния и установил некоторые значения для меток.
Это было нормально на iOS 12 и более поздних версиях .Но drawRect
не вызывается - iOS 11.3 и более ранние .
Итак, я нашел обходной путь.Я использую метод willMoveToWindow
, чтобы сделать то, что я сделал бы в viewWillAppear
@implementation AFEBigLapTimerWidgetView
- (void)drawRect:(CGRect)rect {
if (self.viewModel.isLapTimerServiceStarted) {
[self setLapTimerButtoStateWithState:AFELapimerButtonStateLap];
[self.viewsToHide enumerateObjectsUsingBlock:^(UIView *_Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
obj.hidden = NO;
}];
[self.viewModel updateLabelsForStartedService];
} else if (self.viewModel.isCountdownOngoing) {
// Check if countdown is ongoing
self.countdownLabel.hidden = NO;
self.countdownLabel.alpha = 1.0;
[self setLapTimerButtoStateWithState:AFELapimerButtonStateLap];
[self countdownValueChanged:self.viewModel.countdownValue];
[self.viewsToHide enumerateObjectsUsingBlock:^(UIView *_Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
obj.hidden = YES;
}];
} else {
[self setupDefaults];
}
}
@end