Ich versuche, ein Overlay über die Statusleiste zu setzen, indem ich Folgendes tue:
ViewController-Implementierung
- (IBAction)addViewOnTop:(id)sender {
StatusBarOverlayWindow *overlay = [[ACStatusBarOverlayWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
overlay.hidden = NO;
[overlay makeKeyAndVisible];
}
StatusBarOverlayWindow-Headerdatei
#import <UIKit/UIKit.h>
@interface StatusBarOverlayWindow : UIWindow {
}
@end
StatusBarOverLayWindow-Implementierung
@implementation StatusBarOverlayWindow
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Place the window on the correct level and position
self.windowLevel = UIWindowLevelStatusBar + 1;
self.frame = frame;
self.backgroundColor = [UIColor orangeColor];
}
return self;
}
@end
Wenn ich auf eine Schaltfläche klicke, passiert gar nichts. Hat jemand irgendwelche Gedanken zu diesem Thema? Bitte führen, danke
Antworten:
2 für die Antwort № 1Versuchen Sie, einen starken Bezug zu halten StatusBarOverlayWindow
, ohne dass die Variable nach dem addViewOnTop:
Methode ist abgeschlossen. Eine Immobilie wird hier gut funktionieren.
Beispiel:
@interface ViewController : UIViewController
@property (nonatomic, strong) StatusBarOverlayWindow *overlayWindow;
@end
Dann in Ihrer Methode:
- (IBAction)addViewOnTop:(id)sender {
self.overlayWindow = [[ACStatusBarOverlayWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
overlay.hidden = NO;
[overlay makeKeyAndVisible];
}