1

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

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

看起来像这样:

示例图像

4

2 回答 2

3

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

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];
于 2012-12-12T15:46:30.867 回答
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];`
    

在您的图像中看起来您将替换myParentView为您希望保持在顶部self.viewmyLogoSubview视图,但这只是我基于您的图像的假设。

于 2012-12-12T15:57:36.967 回答