iOS中显示类控件的选择(一)

为什么第一篇会写这个, 是因为这个最近做这个项目刚结束时候, 听朋友说一些东西.一个点击变色的控件(就类似于微博点赞, 点完会变色),他居然能想着用SegmentControl, 额, 当时瞬间觉得智商不够用,  这两个东西有关系么..

着实为有些人额智商捉急..哎..代码真是让梦想飞了起来, 没有想不到, 也没有做不到..

一般显示类的控件, 就是UIView及其子类, 当然还有UIImage和UIBarButtonItem(严格来说他们不算显示类的,就是个容器,只能借助其他类来显示),总的来说就UIKit框架那些东西辣~它们给我们提供了UI界面的无限可能, 也有很多神奇的方法和属性, 甚至你都想不到, 比如刚开始的时候不知道UILabel和UIImageView的userInterAction是NO,然后怎么加手势都没反应. 这点到现在我都搞不懂, 苹果为什么要给这么个默认值. 

我很喜欢说: 那些显示类的,他们基本都是继承UIView的, 可以随意往上边贴东西~! 所以不要以为他们上边系统给定制了一些东西就感觉奇怪了.他们还是UIView.

好了从老大哥UIView开始.

UIView是最简单的也是最难的.为什么这么说呢, 因为他什么都没有,做一些基本的功能,比如显示文字或者相应一些时间都需要借助其他类.同时它是最简单的,同样因为他什么都没有,属于开发者的可定制型很强, 你可以随意在上边添加各种东西, 这为一些复杂的cell或者不完全视图提供了可能. 

一旦你的页面比较复杂,或者说子视图很多,这时候你可能就需要个UIView,他就像一个碗,可以装上各种你喜欢的饭菜.UIView没有过多的限制,只需要随意往上边贴东西就可以,但是一定要逻辑清楚,别最后搞到自己的视图都搞不清层级关系,那样后期调效果就麻烦了.

UILabel和UIButton也是比较简单的控件,为什么把他俩个放一块,因为他们的展现形式比较相同, 而且把UILabel加上手势的话和UIButton的addTarget:Action:也没有特别大得区别, 反倒觉得UILabel更强大点.

 iPhone的关机大家应该都见过, iOS7之前是个方形可滑动的滑块, iOS7.1之前是个红色的滑条, iOS7.1之后变成一个圆形的滑块,其实都是UILabel加上一个滑动的手势来改变frame,最后响应关机的方法.滑动解锁也是同样.

UIButton和UILabel使用场景差的不会太多, 就是对一个视图要进行一个手势操作的时候, 可能需要对一个视图进行单点操作时候用上UIButton, 其他情况也就UILable就好了,当让不忘了把userInterActionEnabled打开喔~

UIImageView有些时候, 比UIView还要强大, 比如你的界面需要一个背景图, 同时上边还会有很多控件, UIImageView会是个很好的选择, 但UIImageView使用的时候, 同样别忘记打开userInterActionEnabled.

UIScrollView和UICollectionView, UIScrollView是使用最多的控件之一, 为什么这么说呢, 因为iPhone上使用最多的UITableView就是继承UIScrollView的, 别笑, 真的有很多人不知道的. UIScrollView适合一些左右滑动的较大的页面, 一般是一个很长的页面而且高度和屏幕高度相当, 就像系统的相册,还有一些轮转播放的动画, 当然你也可以用UICollectionView, 如果你对自己重写的layOut有信心的话.  UICollectionView同样是对于一个很长的页面, 同时页面上贴有很多摆放不平齐的页面,  这时候就只能用UICollectionView了.

UITableView可以说是iPhone上最常见的显示控件了吧,差不多每个应用都会有,系统中几乎每个页面也都有~ 

tableView虽然好用,但是经常被滥用. 它适用于一个数据比较多,而且整体布局比较规范, 单数据条以一行或多行为单位,且该种数据显示类型相同或者差异不大的情况下,比如说多条微博的页面, 多条新闻的页面.

因为在UI搭建的时候, 会出现一个页面中很多数据, 看起来很规范但他们显示类型是不同的,这时候有的童鞋会想创建几个不同的cell,这样tableView会帮你把这几个显示数据的view排列的很整齐,看起来很合理. 不过你没有想过这样的一个问题, tableViewCell是可以被选中的,一旦你用tableView现实了, 那么这些分行现实的视图就会又被选中的效果,这样就会很麻烦, 如果你把选中效果去掉,会损失掉一些特性, 但是如果不去除,会看着很别扭,不太符合使用习惯. 所以对于看上去在整齐,但是他们的显示效果不是那么相同的情况, 还是选择自定义的UIView吧.

UITabBar和UINavigationBar这个两个控件, 他们就比较特殊了, 因为他们几乎是每个页面都存在的(好像Path的抽屉效果出世之后, TabBar少了很多).身边很多朋友喜欢用push推出下个页面, 个人不太喜欢, 虽然不用自己写个navigationController,但是好像push出那个可定制型不太强. 所以还是用model比较好点. TabBar和抽屉效果一般是不同时存在的(最近我这个项目就破天荒的把它们都用上了, 而且还产生了好多不该有的bug). 因为TabBar和抽屉都是管理几个耦合性不是特别强或者没有什么关系的页面, 所以一般都在二选一, 而且TabBar比较占用屏幕空间, 所以个人还是喜欢抽屉.据说iPhone6要变大, 看来苹果也开始注重设备的尺寸了, 那么相应的API也会做出一些改变, 我觉得TabBar这个东西迟早要被弃用,并且苹果应该会推出一个类似于iPad上专有的UISplitViewController一样一个类来实现类似于抽屉的效果, 这样就不同天天第三方导来导去了.

好了,今天就写到这里吧,明天继续,好饿....


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值