何时在iOS中使用layoutSubview

Isa*_*kul 5 iphone ipad ios

我正在为iPad编写需要自定义布局的iOS应用程序.

纵向和横向的布局完全不同,因此使用UIAutoResizingMask无法解决.

我尝试使用layoutSubview方法,但我检测到布局子视图被调用很多(来自UIScrollView).如何减少layoutSubview调用以优化代码,或者我应该在旋转设备时自己调用它.

谢谢.

Dar*_*ust 3

layoutSubviews孩子 打电话的事实UIScrollView非常不幸,但有一个(丑陋的)解决方法:

@interface MyClass : UIView {
    BOOL reallyNeedsLayout_;
}
@end

@implementation MyClass

- (void)setNeedsLayout
{
    [super setNeedLayout];
    reallyNeedsLayout_ = YES;
}

- (void)setFrame:(CGRect)rect
{
    [super setFrame:rect];
    reallyNeedsLayout_ = YES;
}

- (void)layoutSubviews
{
    if (!reallyNeedsLayout_) return;
    reallyNeedsLayout_ = NO;

    // Do layouting.
}
@end
Run Code Online (Sandbox Code Playgroud)

这不是最好的解决方案,但似乎效果相当好。