【问题标题】:UIView with xib ignores size classes带有 xib 的 UIView 忽略大小类
【发布时间】:2016-10-12 06:12:30
【问题描述】:

我正在开发自定义通知视图,它必须显示在所有内容中。为了达到这个 我已经将它实现为单独的 UIWindow 的子视图,除了布局之外一切正常:我使用大小类,而布局只是忽略它。 这是代码 我用来设置我的视图:

NotificationView *notificationView = [[[NSBundle mainBundle] loadNibNamed:@"NotificationView"
                                                                    owner:self
                                                                  options:nil] firstObject];
UIWindow *window = [[UIWindow alloc] initWithFrame:frame];
// Additional window setup..

[window addSubview:notificationView];

【问题讨论】:

  • 你有没有尝试在你的self.view中添加notificationView?
  • @NiravDoctorwala,我没有视图控制器
  • 这不是你的第一个屏幕吧。你需要在当前运行的屏幕中进行子视图。
  • @NiravDoctorwala 你说的屏幕是什么意思? UIScreen?

标签: objective-c layout xib uiwindow size-classes


【解决方案1】:

UPD:我想通了

我直接将我的 notificationView 添加到 UIWindow,在这种情况下,大小类会被忽略。然后我尝试实例化相应的 UIViewController 子类(虽然我并不真正需要它)并将其添加到它的 self.view 在这种情况下大小类按预期工作。

结论:视图必须在 UIViewController 视图层次中才能支持大小类。

【讨论】:

  • 非常感谢!
【解决方案2】:

您需要在代码中添加约束,以便在将一个视图添加到另一个视图之后将两个视图关联起来。

阅读此处了解更多信息:

https://adoptioncurve.net/archives/2014/08/working-with-size-classes-in-interface-builder/

【讨论】:

  • 我已将它们添加到 xib 中
  • 在代码中添加约束,当你把它添加到superview时,自动生成的约束保持它的当前帧。当 superview 调整大小时,它们会根据 autoresizing mask 调整大小
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 2014-11-09
  • 2018-07-09
  • 1970-01-01
  • 2017-09-26
  • 2014-12-11
  • 1970-01-01
  • 2014-12-01
相关资源
最近更新 更多