如何获取多个视图的最大Y坐标

时间:2014-09-09 07:33:36

标签: objective-c

如果我在容器/父视图中有n个视图,我如何检查是否有任何子视图扩展到父视图?

如果我有1个子视图,我可以执行以下操作 CGRectGetMaxY(subView.frame)> CGRectGetMaxY(containerView.bounds)

1 个答案:

答案 0 :(得分:0)

NSArray内置了一些非常酷的东西来获取数组中的平均值/最大值/等值。你想要做的是:

NSNumber *maxY = [subviewArray valueForKeyPath:@"@max.maxY"];

但是,由于UIView默认情况下没有maxY属性,因此无效。但不要担心!我们可以通过扩展UIView来添加它:

// UIView+Extensions.h
@interface UIView(Extensions)

- (CGFloat)maxY;

@end

// UIView+Extensions.m
@implementation UIView(Extensions)

- (CGFloat)maxY
{
    return CGRectGetMaxY(self.frame);
}

@end

现在,您可以安全地使用[subviewArray valueForKeyPath:@"@max.maxY"];来获取所有子视图的最大Y值。