如何在顶部显示uiview?

时间:2012-12-12 15:41:58

标签: objective-c uiview uivewcontroller

我想在应用运行时始终显示logo UIView, 我知道有办法做到这一点,为每个UIView添加相同的UIViewController, 但我认为这不是最好的方法。 当我有很多页面并修改logo UIView时,必须在每一页都修改它。

有人有更好的方法吗? 感谢。

看起来像这样:

sample image

2 个答案:

答案 0 :(得分:2)

由于每个应用程序只有一个窗口,并且视图没有级别,因此无论如何都必须确保视图保持在层次结构的顶部。一种相对简单的方法是将其直接添加到界面其余部分(导航控制器)上方的窗口中:

applicationDidLaunch:

// After the main navigation controller or tab controller has been added
// either programmatically or in the xib:
UIImage *logo = [UIImage imageNamed:@"logo.png"];
UIImageView *logoView = [[UIImageView alloc] initWithImage:logo];
[self.window addSubview:logoView];

答案 1 :(得分:2)

实际上,我认为(a)创建UIView的子类,显示您的徽标并在其中具有所有必要的设置,然后(b)将此子类添加到每个视图控制器是最干净,最易于管理的方法

我更喜欢这种方法而不是将视图添加到窗口的原因是因为如果您有一个不想显示徽标的视图,则不需要显示和隐藏添加到窗口中的内容。此外,根据您的操作,直接添加到窗口可能会导致某些iOS设备出现轮换挑战。

另外,要确保徽标视图始终位于视图层次结构的顶部,您可以执行以下两项操作:

  1. 如果视图已存在,您可以使用[UIView bringSubviewToFront:]

    将其显示在前面
    [myParentView bringSubviewToFront:myLogoSubview];
    
  2. 如果您要创建视图,则在使用[UIView addSubview:]添加视图时它将位于顶部

    // Set up myLogoSubview first here with alloc+init, etc.
    [myParentView addSubview:myLogoSubview];`
    
  3. 在您的图片中,您会将myParentViewself.viewmyLogoSubview替换为您希望保持最佳状态的视图,但这只是基于您的假设图像。