IOS 获取storyboard 中的 某个 view 设置隐藏显示

IOS 获取storyboard 中的 某个 view 设置其隐藏

遇到一个需求,要根据界面来选择隐藏相应的控件,view在storyboard 中,不是代码动态添加的。首先要获取对应view,然后设置隐藏。

iOS 可以使用view.viewWithTag(tag: Int)获取到view,这种比较适合使用代码动态布局的,一般添加view时候会设置其tag,  直接使用tag,就能简单获取了。使用ios 的storyboard 布局时, tag就不那么方便了,看控件布局最直观,直接view.subviews[??]可以 获取到对应的view.

获取到对应的控件了,接下来实现隐藏效果。

原布局效果如图:


有三种方法达到隐藏显示效果:

1)设置alpha = 0 , view 全透明, 用户看不到。

代码中设置 view.alpha = 0

运行效果如下:

    

   alpha 设置 view 全通明后,在布局中仍然占据对应的位置,并没有被移除,资源仍然占用。

2)设置isHidden = true, 隐藏起来,用户不可见。

    view.isHidden = true

运行效果如



3) removeFromSuperview 移除显示,用户也看不见。

view.removeFromSuperview()



思考:

如果storyboard中布局时候是hidden 的,在运行时候设置显示view.isHidden = false, 

运行效果如图,控件被压缩了,原来没有分配它的位置,显示后控件位置被挤压。

可以认为布局时候是hidden的,在layout时候并不会占用资源,在需要显示时候才会分配资源。如此性能会优于 方法1)。

这个类似android visibility 设置为gone/ invisible 的区别。


参考文档2)如果控件有复用,则可以选择hidden, 而不是remove 控件,控件不会立即被丢弃,可以节省资源,提高性能。

ios 用tag来标示一个控件, int 类型,在storyboard 手动填入。并且 ios 有保留 0-100的 数字。想在代码中获取控件,得先知道那个数字,一串数字代表的哪个控件,真的考验人。android 对于每一个控件,有id作为唯一标示,id 是string, 系统会自动分配个数字标示,只要在声明时候配置好,全局使用。string标示清晰方便。


参考:

1)https://blog.csdn.net/moon_prince2013/article/details/49632655

2)https://blog.csdn.net/dizhu1992/article/details/50906261

3)https://blog.csdn.net/qq_21649645/article/details/51330219

猜你喜欢

转载自blog.csdn.net/xiangrufeifei3/article/details/80534965