【问题标题】:Calling setNeedsDisplay in layoutSubviews?在 layoutSubviews 中调用 setNeedsDisplay?
【发布时间】:2012-11-17 21:07:16
【问题描述】:

考虑在drawRect: 中绘制的具有自定义背景的视图。如果视图改变大小,则需要重新绘制背景。

这是个坏主意吗?

- (void) layoutSubviews
{
    [super layoutSubviews];
    [self setNeedsDisplay];
}

如果是,考虑到我无法控制谁更改视图的大小,有什么更好的选择?

【问题讨论】:

    标签: iphone ios uiview drawrect layoutsubviews


    【解决方案1】:

    不要那样做,没必要。将视图的contentMode设置为UIViewContentModeRedraw

    UIViewContentModeRedraw

    通过调用 setNeedsDisplay 方法在边界发生变化时重新显示视图。 在 iOS 2.0 及更高版本中可用。 在 UIView.h 中声明。

    这样会达到同样的效果。

    【讨论】:

    • +1 教我一些新东西。此外,它似乎工作! :)
    • 请注意,在layoutSubviews 中发送setNeedsDisplay 也可以,如果您只需要在某些大小更改上重新绘制,则可能需要这样做。
    • 你能告诉我在哪里添加一行代码来设置contentMode是在init:layoutSubviews()还是?因为我已经在init: 中添加了它,但它对我有用。
    • @SunilRao 无论您在哪里创建视图都应该没问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多