Je dois reproduire la fonction de Bringsbieviefront: sur l'iPhone, mais je programmment sur le Mac. Comment cela peut-il être fait? P>
6 Réponses :
n'avez pas vraiment essayé cela - et il peut y avoir de meilleurs moyens de le faire - mais cela devrait fonctionner:
NSView* superview = [view superview]; [view removeFromSuperview]; [superview addSubview:view];
Probablement inefficace, mais cela accomplit ce que je voulais, alors merci.
Il peut être intéressant d'enquêter sur l'utilisation de la méthode code> setsubviews: code> à la place.
Des vues sur les frères et sœurs qui se chevauchent peuvent être difficiles à faire du travail dans APPKIT-C'était complètement non pris en charge pendant une longue période. Envisagez de les faire des calaises à la place. En tant que bonus, vous pourrez peut-être réutiliser ce code dans votre version iOS. P>
Assurez-vous également de activer la couche de rendu de quartz: sinon, votre couche ne peut pas être rendue correctement. p> p>
La réponse de Pete Rossi fonctionne, mais n'oubliez pas de conserver la vue lorsque vous le supprimez de SuperView.
Vous pouvez ajouter ceci dans une catégorie sur Nsview: p>
-(void)bringSubviewToFront:(NSView*)view { [view retain]; [view removeFromSuperview]; [self addSubview:view]; [view release]; }
La réponse de Pete Rossi n'a pas fonctionné pour moi parce que j'avais besoin de faire apparaître la vue à l'avant lors de la glisser avec la souris. Cependant, dans les mêmes lignes, les mêmes lignes ont fonctionné sans tuer la souris:
- (void) bringToFront { CALayer* superlayer = [[self layer] superlayer]; [[self layer] removeFromSuperlayer]; [superlayer addSublayer:[self layer]]; }
Je suis venu chercher la solution à cela et, sauf un kerfuffle parce que ma vue d'hébergement n'était pas sauvegardée, cela a fonctionné un régal. Merci de le partager.
Ceci est SWIFT 3.0 Solution:
extension NSView { public func bringToFront() { let superlayer = self.layer?.superlayer self.layer?.removeFromSuperlayer() superlayer?.addSublayer(self.layer!) } }