【问题标题】:Efficient method to find subviews outside of frame of view在视图框架之外查找子视图的有效方法
【发布时间】:2011-06-26 15:31:00
【问题描述】:

我有一组视图,它们也是基本视图的子视图。我想有效地删除所有不在基础视图框架内的视图(即不可见)。

除了计算所有帧与基本视图帧的交集之外,我正在寻找找到最有效方法的建议。

【问题讨论】:

  • Apple 为 iphone 编写的名为 TiledScrollView 的示例还通过运行 for 循环计算交叉点来找出不可见的图块。查看示例链接中的 layoutSubViews 函数。

标签: iphone objective-c


【解决方案1】:

如果您想在子视图不在基础视图的框架内时删除它们,您需要计算它们的框架与基础视图的交点。或者,您可以使用 bool CGRectContainsRect ( CGRect rect1, CGRect rect2 ); 而不是完全计算交集。

如果您尝试这样做来优化子视图绘制,您可以考虑使用UIView'scliptobounds property,而不是删除子视图:

clipsToBounds

一个布尔值,用于确定子视图是否被限制在接收者的范围内。

@property(nonatomic) BOOL clipsToBounds

讨论

将此值设置为 YES 会导致子视图被裁剪到接收器的边界。如果设置为 NO,其帧超出接收器可见边界的子视图不会被剪裁。默认值为 NO。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-07
    • 2014-02-15
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多