iOS开发 - 第05篇 - 项目 - 02 - 导航栏

1、Debug下NSLog




2、Xcode图片拉伸


直接选中图片,在右侧属性中设置即可,避免代码拉伸。




3、添加搜索框


在发现控制器的导航栏中添加一个搜索框。




3.1 通过UISearchBar




系统自带的UISearchBar并不好用,不能改变其高度。


3.2 通过UITextField




3.3 自定义搜索框


注:由于上述创建搜索框控件在其他地方也有可能用得上,因此最好将其抽取出来,自定义一个搜索框控件






4、弹出下拉菜单


4.1 界面




4.2 设置导航栏的titleView




1:设置UIButton左边文字,右边图片,可以通过设置imageEdgeInsetstitleEdgeInsets来实现,也可以通过自定义UIButton来实现(设置titleimageframe)

2:若使用imageEdgeInsetstitleEdgeInsets来实现,则需要计算文字的长度

3:上述自定义控件也可以封装起来,方便其他地方使用


4.3 弹出


1> 对popover_background图片进行垂直拉伸

注:如果图片的某个方向上不规则,比如有突起,那么这个方向就不能拉伸

2> 将弹出的View添加到UIWindow上(而且是最上面的UIWindow),不要添加到UIView上,否则会跟随UIView滑动

3> 添加蒙版,在下拉菜单弹出的时候,后面的界面不能点击




注:下拉菜单可能用在其他地方或者其他项目,需要对其进行封装


5、简单封装下拉菜单


注:自定义一个继承自UIView的下拉菜单控件,而且封装一个遮盖即可,即将下来菜单封装到遮盖里面,遮盖作为一个自定义控件。


5.1 自定义HWDropdownMenu




封装:先写外面,外面需要这么使用,再具体实现里面。




注:可在initWithFrame中设置self.backgroundColor= [UIColor clearColor];测试是否添加上去。


5.2 具体实现


1>懒加载一个UIImageView,用于背景黑色图片,并且以后需要往背景添加其他控件




2> 设置下拉菜单内容 --- 注意和背景图片大小适配

3> 自定义测试UITableViewController,将其放到下拉菜单里面,实现效果如下:












6、完善下拉菜单的封装


6.1 设置弹出下拉菜单的位置


上述showFrom方法中,并没有设置下拉菜单位置,需要根据点击那个控件的位置,在其下方弹出下拉菜单。

注:其中位置的确定需要使用坐标系转换!!!

在UIView的分类方法中封装centerX和centerY方法






6.2 取消弹出菜单


在HWDropdownMenu的touchesBegan方法中[selfdismiss];即可


6.3 自动调整下拉菜单的宽度


上述做法是:下拉菜单的高度设置为自动调整,宽度设置为一定,最好改为宽度也有外面来设置,根据外面传进来的控件宽度,设置里面下拉菜单的宽度

1> 删除懒加载containerView的217宽度

2> 设置Xcode图片为拉伸模式(默认平铺)




3> 设置setContent方法修改




7、自定义tabBar


7.1 界面




注:UITabBarButton属于系统稀有,外界表面上不能改变其位置和尺寸!!只能自定义tabBar,重写layoutSubViews方法,重新排布位置!!!


7.2 自定义WBTabBar


1>自定义WBTabBar,继承自UITabBar,添加加号按钮




2> 系统私有的UITabBarButton系统私有,可以通过字符串类名判断是否是该类




3> 换掉WBTabBarController中的TabBar

注:系统自带的TabBar属于只读属性,可以通过KVC来换!




7.3 点击加号Modal控制器


1Modal控制器需要用控制器来调用,自定义TabBar需要将按钮点击事件传递出去,使用代理(WBTabBarController称为TabBar的代理)

2TabBar本来就有delegate属性




3:自定义TabBar协议需要尊重系统TabBar协议






4:点击加号通知代理Modal控制器




8、KVC补充 --- 重要


1:利用KVC可以随意修改一个对象的属性或者成员变量,不管其是否是私有属性!!!

2forKeyforKeyPath区别(同理取值)




3:取值




9、首页导航栏titleView箭头切换


给HWDropdownMenu定义代理,首页控制器遵循代理,让下拉菜单销毁的时候通知代理切换图片

在HWDropdownMenu的show和dismiss方法中通知代理






注:涉及两张图片之间的切换,可以使用UIButtonselected属性!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值