est-il possible sur IOS qu'une vue flotte toujours au-dessus de toutes les autres vues. Je pose cela parce que ce que je voudrais réaliser est une vue qui flotte au-dessus d'une entreprise de visualisation, puis un contrôleur de vue modal glisse dans, tandis que cette vue particulière flotte toujours sur ce contrôleur de vue modal (espère que vous obtenez ce que j'essaie de dire ce que j'essaie de dire ). p>
3 Réponses :
Il y a. Vous pouvez ajouter votre vue à la fenêtre principale code> code> et apportez-la à l'avant lorsque vous devez.
dans le code suivant est présumé que Ce code ajouterait de petit carré bleu sur le coin supérieur gauche de l'écran. P> _viewconroller code> et
_Anotherview Code> sont des propriétés fortes de l'Appdelegate - la configuration pourrait bien sûr être différente. p>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
_viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
_anotherView = [[UIView alloc] initWithFrame: CGRectMake (0.0,0.0,20.0,20.0)];
[anotherView setBackgroundColor: [UIColor blueColor]];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
[self.window addSubView: _anotherView];
[self.window bringSubViewToFront: _anotherView]; //not really needed here but it doesn't do any harm
return YES;
}
Je crois que ça devrait, mais je ne l'ai pas essayé. Il est possible que vous deviez créer une méthode pour apporter _AnursherViewToFront et l'appeler après que ViewControllers change des endroits.
Vous pouvez effectuer ce qui suit si vous utilisez Storyboard et Autolayout (Inspiré par la première réponse)
-(void)setWidth:(CGFloat )theWidth forView:(UIView *)theView inSuperView:(UIView *)theSuperView { assert([theSuperView isEqual:theView.superview]); NSLayoutConstraint *cn = [NSLayoutConstraint constraintWithItem:theView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:theWidth]; // [cn setPriority:999];//make it variable according to the orientation [theSuperView addConstraint:cn]; } -(void)setHeight:(CGFloat )theHeight forView:(UIView *)theView inSuperView:(UIView *)theSuperView { assert([theSuperView isEqual:theView.superview]); NSLayoutConstraint *cn = [NSLayoutConstraint constraintWithItem:theView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:theHeight]; [theSuperView addConstraint:cn]; } -(void)setLeading:(CGFloat )theLeading forView:(UIView *)theView inSuperView:(UIView *)theSuperView { assert([theSuperView isEqual:theView.superview]); NSLayoutConstraint *cn = [NSLayoutConstraint constraintWithItem:theView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:theSuperView attribute:NSLayoutAttributeLeading multiplier:1 constant:theLeading]; [theSuperView addConstraint:cn]; }
Ma solution à ce problème est quelque chose comme ça. Je vais créer UIView et à l'intérieur sera Uilabel.
première installation à l'intérieur d'une classe: p> Après cela, vous ajoutez quelque chose comme ça. P> override func viewDidLoad() {
super.viewDidLoad()
showBannerWithOption(title: "test", color: greenColor)
}