cari

Rumah  >  Soal Jawab  >  teks badan

git - iOS开发隐藏一个View是直接设置hidden属性,还是将frame设置为0

这两种方式,效果一样?我指的是性能方面

天蓬老师天蓬老师2772 hari yang lalu1290

membalas semua(11)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-17 17:42:45

    我觉得这个你得自己看情况,用Hidden确实很方便,但是今天我使用的时候发现并不好控制,不是逻辑不好控制,只是当你在父视图中添加一个view的时候,如果你之前添加了,那么就在下面,这样你肯定是不能去点击了,所以当我需要点击它上面视图的时候它能消失,可是它本身上面就有按钮,也需要事件响应,这样你根本点击不了上面,当然你可以让它成为第一层,这个虽然没尝试,但是可以知道,我使用frame就可以让它在上面,而实用hidden却是在下面,

    这个情况是因为使用了一个BaseViewcontroller,(继承的ViewCointroller 并添加微UInavigationViewcontroller ,便于压栈),其他的视图都是继承它的,在BaseViewController 中的导航栏中的按钮中添加响应事件,当MoreBtn.hidden == NO 的时候,我就在viewWillAppear中创建MoreView,也就是这个view。OK , 我需要的是:当点击MoreBtn的时候点击一下就出现MoreView,再次点击需要MoreView消失,点击其它地方也是MoreView消失,刚开始以为很简单,使用touchBegin以为就可以了,但是实际上是需要点击在在父视图中的view才有响应,当前的viewController中除了导航栏以下都是一个tableView,不要以为你继承了BaseViewcontroller之后,你点击的任何地方它都会响应,你必须给tableView添加点击事件才有事件响应,对此我使用的Hidden的话就没法响应,只能设置frame。

    本来是想来寻找区别的,刚看到题目,就来讨论了一下。

    ===========
    不好意思 ,之前回答错了,应该不是frame的原因,后来发现是touch方法的原因,因为那个view也属于self.view,所以,touch方法中要它消失的时候,点击它自己也会消失,这样是不对滴,所以我就规定了它点击的范围使用的CGpoint,包含在导航栏范围的时候就消失,确实是很笨的方法,如果还有啥好方法,再研究,不好意思,看来hidden和frame的功能其实是可以相同的也许还有什么需要我们去探索吧!加油

    balas
    0
  • Batalbalas