我需要在 iPhone 上复制 bringSubviewToFront: 函数的功能,但我是在 Mac 上编程。这该怎么做?
我需要在 iPhone 上复制 bringSubviewToFront: 函数的功能,但我是在 Mac 上编程。这该怎么做?
NSView* superview = [view superview];
[view removeFromSuperview];
[superview addSubview:view];
CALayer* superlayer = [[view layer] superlayer];
[[view layer] removeFromSuperlayer];
[superlayer addSublayer:[view layer]];
- (void) bringToFront {
CALayer* superlayer = [[self layer] superlayer];
[[self layer] removeFromSuperlayer];
[superlayer addSublayer:[self layer]];
}
另外请确保启用了石英渲染器的层:
...
NSImageView *anImage = [[NSImageView alloc] initWithFrame:NSRectMake(0,0,512,512)];
[anImageView setWantsLayer:YES];
...
-(void)bringSubviewToFront:(NSView*)view
{
[view retain];
[view removeFromSuperview];
[self addSubview:view];
[view release];
}
在AppKit中,重叠的兄弟视图可能很难正常工作——长时间以来完全不支持。考虑将它们改为CALayers。作为奖励,您可以在iOS版本中重用此代码。
这是Swift 3.0的解决方案:
extension NSView {
public func bringToFront() {
let superlayer = self.layer?.superlayer
self.layer?.removeFromSuperlayer()
superlayer?.addSublayer(self.layer!)
}
}
setSubviews:
方法。 - ArtOfWarfare