iOS - UIView永远在前面没有BringSubviewToFront

时间:2014-03-29 08:10:40

标签: ios iphone objective-c cocoa-touch ios7

我可以拥有一些 UIView ,它总会出现在iOS的顶部吗?

我的项目中有很多addSubview,但我需要有一个小视图,它总会出现。除了

之外还有其他选择
[self.view bringSubViewToFront:myView];

由于

4 个答案:

答案 0 :(得分:3)

另一个选项设置为layer.zPosition

UIView.

您需要添加

#import <QuartzCore/QuartzCore.h> 

.m file.

的框架

设置如

myCustomView.layer.zPosition = 101;// set maximum value as per your requirement.

有关layer.zPosition read this documentation.

的详细信息
  

<强>讨论
  此属性的默认值为0.更改此属性的值会更改屏幕上图层的前后排序。这会影响框架矩形重叠的图层的可见性。

答案 1 :(得分:2)

还有一个选项(特别是如果你想重叠几个屏幕,例如logo) - 单独的UIWindow。使用windowLevel设置新窗口的级别。

UILabel *devLabel = [UILabel new];
devLabel.text = @" DEV ";
devLabel.font = [UIFont systemFontOfSize:10];
devLabel.textColor = [UIColor grayColor];
[devLabel sizeToFit];

CGSize screenSize = [[UIScreen mainScreen] bounds].size;
static UIWindow *notificationWindow;
notificationWindow = [[UIWindow alloc] initWithFrame:
                                CGRectMake(screenSize.width - devLabel.width, screenSize.height - devLabel.height,
                                devLabel.width, devLabel.height)];
notificationWindow.backgroundColor = [UIColor clearColor];
notificationWindow.userInteractionEnabled = NO;
notificationWindow.windowLevel = UIWindowLevelStatusBar;
notificationWindow.rootViewController = [UIViewController new];
[notificationWindow.rootViewController.view addSubview:devLabel];
notificationWindow.hidden = NO;

答案 2 :(得分:0)

另一个选项是在此永远在顶级子视图下方添加其他子视图。例如:

[self.view insertSubview:subview belowSubview:_topSubview];

如果您搜索此类,则无法使用Interface Builder。它应该以编程方式完成。如果您不想每次都使用bringSubviewToFront:,只需在此下方插入其他子视图。

答案 3 :(得分:0)

很多时候你的视图没有出现在viewDidLoad中,或者如果你的视图来自parentViewController(例如在许多过渡中,比如模态segue ..),你只能在viewDidAppear中看到parentViewController,所以:

尝试将bringSubviewToFront放入:

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.view bringSubViewToFront:myView];
// or if your view is attached in parentViewController
    [self.parentViewController.view bringSubViewToFront:myView];
}
祝你好运!