(iphone)将子视图的框架设置在超视图的范围之外?

Posted

技术标签:

【中文标题】(iphone)将子视图的框架设置在超视图的范围之外?【英文标题】:(iphone) set subview's frame outside of superview's bound? 【发布时间】:2011-03-23 15:14:36 【问题描述】:

我注意到我可以将子视图放置在超级视图的范围之外(部分或全部)。 我想知道这是否可以接受,因为这在通常的 iphone 视图编程中似乎是不正常的。

谢谢。

【问题讨论】:

【参考方案1】:

这是可以接受的,有时甚至是常见的做法 - 滚动视图或其他“复合”视图的自定义实现,例如,通常将对象放置或移动到超级视图的边界之外。

您可能对UIView 属性clipsToBounds 感兴趣,它将子视图的绘制限制在父视图的范围内。

【讨论】:

在我看来,用户交互只能在其父级范围内的子视图中进行,或者至少对于在其父级范围内的子视图的那些部分是可能的。如果我将 UIBtton 添加为父视图之外的子视图,则无法单击它。 这条评论是纯金的。我对这个“错误”感到很生气。【参考方案2】:

另请注意,在实现可访问性时,越界子视图会造成问题。

辅助框架可以正常显示,但仅在触摸父级边界时选择所述框架的区域时才会出现。如果子视图完全超出父视图的范围,则只能通过打开 VoiceOver 的侧面滑动来访问它。触摸在屏幕上拖动只会在父级范围内点击所述子视图时选择一个视图。

【讨论】:

以上是关于(iphone)将子视图的框架设置在超视图的范围之外?的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局将子视图添加到 UITableView 不会设置其框架

iphone - 将子视图添加到窗口后无法推送模态视图?

将子视图添加到选定的表格视图单元格

iPhone 子视图可以透明吗?

根据设备方向将子视图从 2 行重新排列为 1

将子视图添加到屏幕问题