3

一般来说,我知道有解决方法,但是iOS SDK中有没有简单的方法来隐藏超级视图而不隐藏它的子视图?

我有一个父视图,它是其他一些视图的背景。我想通过将其透明度设置为 0 或设置“隐藏”或其他方式隐藏父级 - 问题是这些更改会影响父级的所有子视图。

再一次,我意识到通常有办法解决这个问题,但在这种情况下,我正在处理一个 mapView,而我的子视图是注释和覆盖。

谢谢,-马特

4

2 回答 2

1

更新

是的,MKMapView 将在其中包含多个渲染层,因此设置 backgroundColor 将不起作用。您可以尝试子类化 MKMapView 以添加一个属性来打开/关闭这些图层(通过将它们删除/重新添加到视图中。)但这似乎很危险。

您可以尝试将 MKMApView 的“clipsSubviews”设置为 NO/FALSE,并将帧重置为 0,0,0,0。但这会影响您将触摸事件发送到子视图的能力。

重新评估视图层次结构可能是更好的解决方案。使它类似于:

main-view
  map-view
  transparent-view
    control-1
    control-2
    etc.

原来的

将 backgroundColor 设置为 [UIColor clearColor]

于 2010-11-19T16:16:46.103 回答
0

您可以将backgroundColor超级视图的属性设置为.clear,这不会影响子视图的外观。

superView.backgroundColor = .clear
于 2018-07-01T23:21:00.637 回答