当设备旋转时,我想在添加到主窗口的项目的 UIView 子类中调用一个函数。
我有很多项目,所以我不想一个一个地调用这样的方法,但我希望它自动为这个项目和所有子视图调用。
谢谢
要获得自动子视图行为,请声明一个UIView
添加您希望调用的方法的类别。然后让您的视图订阅设备旋转通知,并作为其处理通知的一部分,在其所有子视图上调用相同的方法。像这样的东西(键入没有自动更正或编译的好处,所以请作为说明而不是完整的示例程序):
@interface UIView (MyAppAdditions)
- (void)rotationDetected;
@end
@implementation UIView (MyAppAdditions)
- (void)rotationDetected
{
}
@end
@implementation MyView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
}
return self;
}
- (void)didRotate:(NSNotification *)notification
{
[self rotationDetected];
[self.subviews makeObjectsPerformSelector:@selector(rotationDetected)];
}
@end
更灵活的实现也将覆盖initWithCoder:
或awakeFromNib
订阅轮换通知。