一般来说,我知道有解决方法,但是iOS SDK中有没有简单的方法来隐藏超级视图而不隐藏它的子视图?
我有一个父视图,它是其他一些视图的背景。我想通过将其透明度设置为 0 或设置“隐藏”或其他方式隐藏父级 - 问题是这些更改会影响父级的所有子视图。
再一次,我意识到通常有办法解决这个问题,但在这种情况下,我正在处理一个 mapView,而我的子视图是注释和覆盖。
谢谢,-马特
更新
是的,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]
您可以将backgroundColor
超级视图的属性设置为.clear
,这不会影响子视图的外观。
superView.backgroundColor = .clear