Комментарии
- iOS 14 все еще является бета-версией, и любое решение на основе иерархии представлений может перестать работать со следующей бета-версией.
- Оно также может перестать работать в любом будущем iOS выпуск (не бета).
- Вы полагаетесь на иерархию частных представлений. Apple может изменить его в любое время без дополнительного уведомления. IOW он принадлежит к категории использования частного API = вы здесь сами по себе.
Иерархия представлений UIPageControl
iOS 13
iOS 14
New API
Even if you update your code to match the new view hierarchy ...
UIView *pageControlContentView = self.pageControl.subviews[0];
UIView *pageControlIndicatorContentView = pageControlContentView.subviews[0];
[pageControlIndicatorContentView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
obj.layer.borderWidth = 1;
obj.layer.borderColor = UIColor.blueColor.CGColor;
}];
... вы получите что-то вроде этого:
iOS 14 introduced new properties and methods you can use:
Вы можете использовать символы SF, например:
UIImage *image = [UIImage systemImageNamed:@"link.circle.fill"];
self.pageControl.preferredIndicatorImage = image;
Тогда вы получите:
In other words, to be safe, avoid private view hierarchies, use preferredIndicatorImage
. You can prepare your own images if you'd like to customize them, etc. But it's a topic for another question. If you'd like to do it programmatically, search for questions как этот .
Поскольку вы используете иерархию частных представлений, изучите свои инструменты (Xcode) и начните с Изучение иерархии представлений и Отладка иерархий представлений главы. В следующий раз ты сам поймешь, в чем проблема.