【问题标题】:Force autoresizingMask to apply to a UIView强制 autoresizingMask 应用于 UIView
【发布时间】:2011-04-04 11:42:59
【问题描述】:

我有一个通知视图,我在启动后将其添加到应用程序的窗口中,因此它悬停在所有其他视图之上。

当用户旋转设备时,视图不会像 UIViewController 所拥有的那样自动调整大小。

有没有办法手动请求应用视图的autoresizingMask?或者,我怎样才能让没有视图控制器的视图在设备旋转时调整大小?

【问题讨论】:

  • 您找到可接受的答案或解决方案了吗?我也有同样的问题。

标签: iphone uikit rotation ios


【解决方案1】:

我发现添加到应用程序窗口的视图甚至不旋转,更不用说调整大小了。

这是针对Orientation in a UIView added to a UIWindow 的询问和回答:将通知视图添加到窗口的第一个子视图。

UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window) 
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
[[[window subviews] objectAtIndex:0] addSubview:myView];

而且,它还解决了您的问题,您的通知视图现在应该根据其掩码调整大小。

【讨论】:

    【解决方案2】:

    autoResizingMask 与旋转本身没有任何关系。它只是定义了在调整其父视图大小时应如何调整视图大小。

    如果您添加一个顶级视图控制器,它应该可以工作,其视图与窗口大小相同,并且包含所有其他视图。然后你的通知视图将是顶层视图的子视图(连接到视图控制器),并且应该自动旋转。

    【讨论】:

      【解决方案3】:

      你设置了吗:

      view.autoresizesSubviews = YES;
      

      在适当的超级视图中?

      【讨论】:

      • 超级视图是窗口。来自问题:“我有一个通知视图,我在启动后将其添加到应用程序的窗口中,因此它悬停在所有其他视图之上。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多