【问题标题】:Prevent a UIView from Overflow outside SuperView in Swift [closed]防止 UIView 在 Swift 中溢出 SuperView [关闭]
【发布时间】:2018-04-16 10:31:09
【问题描述】:

假设 UIView(0,0,100,100) 有两个子视图,一个是 (-5,-5,10,10),第二个是 (0,95,10,10)。我想让第一个 SubView 从 superView 而不是 secondOne 溢出。 UIView 中是否有任何属性可以设置以防止 UIView 溢出它的 SuperView?或者实现这一目标的最佳方法是什么?

注意:这里的坐标是(x,y,Width,Height)的形式

更新:由于有些人将此问题标记为不清楚,让我添加一些要点:

  1. 我熟悉 UIView 的 clipToBounds 属性,但这会让它的所有子视图都被剪裁,但我的问题是反之亦然。
  2. 我只是想知道 UIView 中是否有任何属性可以防止 UIView 从它的 superView 溢出。
  3. 为了说明同样的问题,我只是举了一个示例,其中将 clipToBounds 设置为 superView 将无法达到我们的目的,因为一个子视图需要从它的父视图溢出。

如果还不清楚,请在 cmets 中告诉我。

【问题讨论】:

    标签: ios swift calayer cliptobounds


    【解决方案1】:

    有一个名为clipsToBounds 的属性,但反之亦然 - 它告诉UIView 它的所有子视图都被剪裁,不会被绘制到它自己的边界之外。

    因此,在您的情况下,如果您不想让一个视图超出范围,而另一个视图则没有,您将需要额外的(透明)视图,该视图与超级视图具有相同的矩形,但会剪切子视图。

    然后将您的剪辑子视图添加为这个新透明层的子视图,另一个应该是父视图的直接子视图。

    希望这会有所帮助:)

    【讨论】:

    • 感谢您的回复,但是添加带有 clipBounds 的新 SubView 可能是一个明显的解决方案,但是如果我们有许多子视图,其中一些溢出而一些没有溢出,则可能需要多个新的透明 UIView从它的superView。我已经更新了同样的问题,希望这会有所帮助.. :)
    • 您只需要 1 个透明 UIView 并带有剪辑到边界,您可以在其中放置 all 不需要溢出的子视图。所有将溢出的内容将作为直接子项在原始超级视图中。据我所知,没有控制父母行为的属性,如果你仔细考虑应该有这样的:)
    【解决方案2】:

    您可以将 UIView 的 clipToBounds 属性设置为 true。当您将 clipToBounds 设置为 yes 时,它的子视图不会溢出。

    【讨论】:

    • 但这会剪切两个子视图。请再次阅读问题..
    猜你喜欢
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多