在 UIViewController 的主视图中加载自定义 UIView

2024-01-01

我对 UIView 进行了子类化并创建了一个 NIB 来控制应用程序的主要逻辑。

希望视图能够很好地缩放,我想将它用于该应用程序的 iPhone 和 iPad 版本。

在 iPhone 上,视图将覆盖全屏。在 iPad 上,视图将仅覆盖屏幕的一部分。

我读过您不应该使用 UIViewControllers 来仅控制屏幕的一部分。因此,我尝试使用 IB 将自定义 UIView 嵌入到主 UIViewController 的视图中。

如何才能做到这一点?


经过大量的试验和错误,我找到了基于以下解释的方法的解决方案question https://stackoverflow.com/questions/1726250,回答者为布赖恩·韦伯斯特 https://stackoverflow.com/users/23324/brian-webster.

该解决方案最初是针对 Cocoa 环境提出的。我希望它在 iOS 环境中也有效。

  1. 使用 NIB 文件创建主视图控制器。在 NIB 中,文件所有者应与主视图控制器的类相对应。
  2. 使用 NIB 文件创建自定义视图控制器。在此 NIB 中,文件所有者应与自定义视图控制器的类相对应。
  3. 在主视图控制器类中创建自定义视图控制器属性。
  4. 在主视图控制器类中创建 UIView 属性。它将保存您的自定义视图控制器的视图。将其定义为 IBOutlet,因此可以在 NIB 中链接。
  5. 将 UIView 拖放到主视图控制器的 NIB 中。将其链接到主视图控制器的视图 IBOutlet。它将用作自定义视图的占位符。
  6. 在主视图控制器的 viewDidLoad 方法中,加载自定义视图控制器 NIB,确定自定义视图的帧大小并将视图复制到主视图控制器的视图中。

这是一些代码:

  • MainViewController.h

    @interface MainViewController : UIViewController {
      CustomViewController *customViewController;
      UIView *customView;
    }
    @property (nonatomic, retain) CustomViewController *customViewController;
    @property (nonatomic, retain) IBOutlet UIView *customView;
    @end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UIViewController 的主视图中加载自定义 UIView 的相关文章

随机推荐