【问题标题】:what's the right way to cause a subview to redraw when the device orientation changes?当设备方向改变时导致子视图重绘的正确方法是什么?
【发布时间】:2010-12-31 03:03:24
【问题描述】:

我有一个带有一个视图和一个子视图的视图控制器。当设备方向更改时,视图会自动重绘,但子视图不会。如果我明确地执行 [subview setNeedsDisplay] 它会重绘,但我没有一个合乎逻辑的位置来将该调用放入我的代码中。而且,由于我不必明确告诉视图重绘,所以告诉子视图重绘似乎违反直觉。有没有办法让子视图在视图重绘时自动重绘?

【问题讨论】:

    标签: ios uiview orientation device


    【解决方案1】:

    我发现以下工作。如果这不是最好的方法,请提供更好的方法。

    subview.m 文件中的initWithFrame: 方法中包含以下内容

    self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    self.contentMode = UIViewContentModeRedraw;
    

    尽管这很有效并且非常适合我的代码,但我不明白为什么子视图需要设置这些属性而视图不需要。

    【讨论】:

      【解决方案2】:

      Swift 3/iOS10 语法:

          self.autoresizingMask = [.flexibleWidth, .flexibleHeight]
          self.contentMode = .redraw
      

      【讨论】:

      • 这很有效,但是如果有人能解释为什么会很棒。
      猜你喜欢
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      相关资源
      最近更新 更多