标签:
直接选中图片,在右侧属性中设置即可,避免代码拉伸。
在发现控制器的导航栏中添加一个搜索框。
3.1 通过UISearchBar
系统自带的UISearchBar并不好用,不能改变其高度。
3.2 通过UITextField
3.3 自定义搜索框
注:由于上述创建搜索框控件在其他地方也有可能用得上,因此最好将其抽取出来,自定义一个搜索框控件
4.1 界面
4.2 设置导航栏的titleView
注1:设置UIButton左边文字,右边图片,可以通过设置imageEdgeInsets和titleEdgeInsets来实现,也可以通过自定义UIButton来实现(设置title和image的frame)
注2:若使用imageEdgeInsets和titleEdgeInsets来实现,则需要计算文字的长度
注3:上述自定义控件也可以封装起来,方便其他地方使用
4.3 弹出
1> 对popover_background图片进行垂直拉伸
注:如果图片的某个方向上不规则,比如有突起,那么这个方向就不能拉伸
2> 将弹出的View添加到UIWindow上(而且是最上面的UIWindow),不要添加到UIView上,否则会跟随UIView滑动
3> 添加蒙版,在下拉菜单弹出的时候,后面的界面不能点击
注:下拉菜单可能用在其他地方或者其他项目,需要对其进行封装
注:自定义一个继承自UIView的下拉菜单控件,而且封装一个遮盖即可,即将下来菜单封装到遮盖里面,遮盖作为一个自定义控件。
5.1 自定义HWDropdownMenu
封装:先写外面,外面需要这么使用,再具体实现里面。
注:可在initWithFrame中设置self.backgroundColor= [UIColor clearColor];测试是否添加上去。
5.2 具体实现
1>懒加载一个UIImageView,用于背景黑色图片,并且以后需要往背景添加其他控件
2> 设置下拉菜单内容 --- 注意和背景图片大小适配
3> 自定义测试UITableViewController,将其放到下拉菜单里面,实现效果如下:
6.1 设置弹出下拉菜单的位置
上述showFrom方法中,并没有设置下拉菜单位置,需要根据点击那个控件的位置,在其下方弹出下拉菜单。
注:其中位置的确定需要使用坐标系转换!!!
在UIView的分类方法中封装centerX和centerY方法
6.2 取消弹出菜单
在HWDropdownMenu的touchesBegan方法中[selfdismiss];即可
6.3 自动调整下拉菜单的宽度
上述做法是:下拉菜单的高度设置为自动调整,宽度设置为一定,最好改为宽度也有外面来设置,根据外面传进来的控件宽度,设置里面下拉菜单的宽度
1> 删除懒加载containerView的217宽度
2> 设置Xcode图片为拉伸模式(默认平铺)
3> 设置setContent方法修改
7.1 界面
注:UITabBarButton属于系统稀有,外界表面上不能改变其位置和尺寸!!只能自定义tabBar,重写layoutSubViews方法,重新排布位置!!!
7.2 自定义WBTabBar
1>自定义WBTabBar,继承自UITabBar,添加加号按钮
2> 系统私有的UITabBarButton系统私有,可以通过字符串类名判断是否是该类
3> 换掉WBTabBarController中的TabBar
注:系统自带的TabBar属于只读属性,可以通过KVC来换!
7.3 点击加号Modal控制器
注1:Modal控制器需要用控制器来调用,自定义TabBar需要将按钮点击事件传递出去,使用代理(让WBTabBarController称为TabBar的代理)
注2:TabBar本来就有delegate属性
注3:自定义TabBar协议需要尊重系统TabBar协议
注4:点击加号通知代理Modal控制器
注1:利用KVC可以随意修改一个对象的属性或者成员变量,不管其是否是私有属性!!!
注2:forKey和forKeyPath区别(同理取值)
注3:取值
给HWDropdownMenu定义代理,首页控制器遵循代理,让下拉菜单销毁的时候通知代理切换图片
在HWDropdownMenu的show和dismiss方法中通知代理
注:涉及两张图片之间的切换,可以使用UIButton的selected属性!
标签:
原文地址:http://blog.csdn.net/nsryan/article/details/51971530