J'ai créé une catégorie sur UIApplication qui a une propriété et une méthode d'aide pour obtenir la première sous-vue de la keyWindow. C'est la vue que vous voulez superposer de toute façon. Maintenant, lorsque vous ajoutez une vue gérée par un UIViewController à cette vue, la méthode shouldRotateToInterfaceOrientation : est appelée.
UIApplication+WindowOverlay.h
#import <UIKit/UIKit.h>
@interface UIApplication(WindowOverlay)
@property (nonatomic, readonly) UIView *baseWindowView;
-(void)addWindowOverlay:(UIView *)view;
@end
UIApplication+WindowOverlay.m
#import "UIApplication+WindowOverlay.h"
@implementation UIApplication(WindowOverlay)
-(UIView *)baseWindowView{
if (self.keyWindow.subviews.count > 0){
return [self.keyWindow.subviews objectAtIndex:0];
}
return nil;
}
-(void)addWindowOverlay:(UIView *)view{
[self.baseWindowView addSubview:view];
}
@end
et voici comment vous l'utiliseriez.
//at the top of the file...or in {yourproject}.pch
#import "UIApplication+WindowOverlay.h
//in a method:
UIView *view = [UIView new];
UIView *window = [UIApplication sharedApplication].baseWindowView;
view.frame = window.bounds;
[window addSubview:view];
//or
[[UIApplication sharedApplication] addWindowOverlay:view];
0 votes
Cette réponse vous aide-t-elle ? stackoverflow.com/a/3368786/419 Si c'est le cas, pouvez-vous l'accepter à la place ?