7
votes

View Flottant avant tout ViewControlers

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 ).


0 commentaires

3 Réponses :


9
votes

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 _viewconroller code> et _Anotherview Code> sont des propriétés fortes de l'Appdelegate - la configuration pourrait bien sûr être différente. p>

Ce code ajouterait de petit carré bleu sur le coin supérieur gauche de l'écran. 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;
}


1 commentaires

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.



3
votes

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];
}


0 commentaires

1
votes

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> xxx pré>

Après cela, vous ajoutez quelque chose comme ça. P>

    override func viewDidLoad() {
        super.viewDidLoad()
    showBannerWithOption(title: "test", color: greenColor) 
}


0 commentaires