程序员人生 网站导航

仿网易彩票思路

栏目:综合技术时间:2014-12-17 08:39:26

仿网易彩票思路

第1步、 项目的配置
   
1> 新建项目:项目前缀:把项目名称里面的大写抽出来。
   
2> 支持项目部署,支持ios6,ios7
   
3> 不支持横竖屏
   
4> 导入图标和启动图片
   
5> 程序启动的时候,隐藏状态栏,ios6需要恢复状态栏显示
   
6> 设置状态栏色彩 ios7默许状态栏交给控制器管理,修改info.plist文件,让状态栏交给application管理
   
6> 项目文件夹按模块划分,Main:(主框架,自定义tab控制器),Other:寄存其他头文件和.m文件(main,代理,pch(头文件))

第2步、 搭建项目主框架
   
1> 修改窗口的根控制器。
       
缘由:主窗口的根控制器是TabBar控制器,TabBar里面的子控制器是导航控制器?为何,由于每一个导航条的标题不1样。

第3步、设置tabBar上按钮的图片
   
存在的问题:
   
1> 设置tabBar上面的按钮图片不好使,tabBarButton的图片有规格,用不了。
   
解决方式:
   
1> 自定义tabBar,系统自带的tabBar上的tabBarButton都不好使,自定义的tabBar添加UIButton,注意继承UIView,由于UITabBar里面的子控件根本用不上。
   
2> 自定义tabBar,添加5个按钮,显示图片

    存在的问题?
    
1> tabBar里面的按钮应当由控制器决定
    
2> push控制器的时候底部条,隐藏不了。
    
解决方法:
    
1提供1个方法,给控制器添加按钮。系统自带的tabBar里有多少按钮也是根据控制器个数决定的。
    
2把自定义tabBar添加到系统自带的tabBar

第4步、点击按钮,切换控制器(UITabBarController.selectedIndex
   
存在的问题?
   
1> 只有UITabBarController设置selectedIndex才可以切换控制器,但是UITabBarController不知道当前选中哪一个按钮
   
解决方式:
   
2> 用代理或block把角标传给控制器

第5步、设置导航条的外观(背景图片和文字),只需要设置1次.
   
1> 为何要获得全部利用程序的导航条外观?避免拿到1个1个导航控制器去设置导航条的外观
   
2> 怎样获得?UINavigationBar *navBar  = [UINavigationBar appearance] 只要遵照UIAppearance这个协议,都可以这样获得。
   
3> 设置导航条的背景色彩?ios7ios6是不1样的。
   
4> 运行ios6,适配ios6的导航条。
   
5> ios7ios6导航条图片的区分?
       ios7:
控制器包括状态栏20的高度,导航条的高度为64,会自动把状态栏20的高度填充
       ios6:
状态栏20的高度不属于控制器,导航条高度44。用44高度的图片
   
6> 定义宏,方便适配 #define iOS7 ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0)
   
7> 设置导航条文字色彩

第6步、自定义导航控制器
   
1> 为何要自定义导航控制器?拦截push操作,重写push方法,在push的时候,隐藏底部条,就不需要1个控制器1个控制器的勾选Hide Bottom Bar on Push
   
2> 在自定义导航控制器设置导航条外观
   
3> initialize里设置:导航条外观只需要设置1次
   
4> initialize:在第1次使用这个类或子类的时候调用
   
5> initialize里判断下是不是是本类调用,是才需要设置导航条,保证设置1次主题。self == [ILNavgationController class]

第7步、 完成每一个模块的导航条
   
购彩大厅:系统自带的UIBarButton不能同时设置图片和文字,拖1个按钮同时设置文字和图片,还需要设置按钮宽度,资讯和图片中间有间距。
// 设置按钮标题的位置
- (
CGRect)titleRectForContentRect:(CGRect)contentRect;
// 设置按钮图片的位置
- (
CGRect)imageRectForContentRect:(CGRect)contentRect;
   
合买跟单:titleView需要自定义按钮,设置内部的位置

第8步、自定义按钮:修改内部子控件的尺寸
   
1.获得当前文字:self.currentTitle
   
2.获得当前文字尺寸.计算内部Label的尺寸。
   
3.图片尺寸:假定图片宽度30. w = contentRect.size.width - 30
   
注意点:
    * titleRectForContentRect
内部不能调用self.titleLabel,会造成死循环。由于self.titleLabel内部会调用titleRectForContentRect
    * boundingRectWithSize
ios7才有,ios6没有这个方法,需要判断使用。

第9步、 自定义按钮尺寸计算-多版本处理
   
1> 理解编译时报错和运行时报错?#import <Availability.h>
   
2> 运行时报错:在SDK7.0的环境(xcode5)编译boundingRectWithSize,是不会报错的,但是运行在ios6的系统上会报错,ios6没有这个方法。需要判断当前运行在哪一个系统,用ios7宏判断。
   
3> 编译时报错:在SDK6.0的环境(xcode4.6)编译boundingRectWithSize,是直接报编译毛病,由于sdk6.0没有这个方法。

第10步、 我的彩票(登录界面)-ios7ios6简单适配
   
存在问题
   
1> 视察UIImageViewy
   
1> UIImageViewy值在ios6ios7不1样。
   
缘由:
   
0> ios6,ios7控制器view的尺寸不1样。
   
1> ios6里主流框架中,导航控制器的根控制器view的尺寸,很小。PPT演示,ios6控制器从导航条开始,ios7从屏幕左上角开始,包括状态栏。
   
2> ios7多了1个edgesForExtendedLayout属性,才让导航控制器的根控制器view的尺寸和屏幕1样大.
   
3> edgesForExtendedLayout可让控制器上下左右扩大
   
解决:
   
1> 通过代码判断下,调剂在ios7ios6UIImageView的位置,这类方式麻烦。由于界面是固定的,用xibstoryboard描写更省时间。
   
2> 找到我的彩票控制器,告知他不要上下扩大就行了,找到Extend Edages,把Under Top Bars Under Bottom Bars取消选中
   
2> 1般开发中,如果不需要转动的控制器,就不需要扩大,由于不需要有穿透效果。
   
3> ios7取消我的彩票控制器的上下扩大。这时候候ios7导航控制器的根控制器view的尺寸就和ios61样的了。
   
4> autolayout解决运行在3.5上图片被压扁。

13> 登录按钮图片拉伸(按钮尺寸:300 * 40
   
1> 拉伸图片中间1个像素点。
   
2> 通过storyboard只能拉伸UIImageView
   
3> storyboard x:表示左侧多少不拉伸 y:表示上边多少不拉伸 w:表示宽度拉伸多少个像素 h:表示高度拉伸多少个像素 x:0.5(左侧1半不拉伸) y:0.5(顶部1半不拉伸) w:0 (宽度拉伸1个像素) h:0(高度拉伸1个像素)
   
4> 拉伸按钮,必须通过代码。
   
5> 自定义登录控制器loginController
   
6> UIImage抽分类resizableImageWithName

14> 我的彩票(右上角设置按钮的色彩和返回按钮的色彩默许是蓝色,需要设置为白色)
   
1> 利用程序所有导航条上的UIBarButton都需要设置白色的。
   
2> UIBarButton在导航条上,所以我们设置导航条的主题色彩就行了。
   
3> 获得全部利用程序的外观设置主题色彩 UINavigationBar setTintColor(主题色彩)
   
3> 只需要设置1次,并且跟导航控制器有关系,在导航控制器里的initialize里设置,并且之前在导航控制器拿到了全部利用程序的导航条

15> 设置ios6上利用程序所有导航条上的按钮背景
   
1> 导航条白色主题只有在ios7才需要设置。
   
2> 设置导航条上的UIBarButton背景,只有在ios6才需要设置
   
3> UIBarButtonUIBarButtonItem决定。
   
4> 获得全部利用程序的UIBarButtonItem,设置全部利用程序的UIBarButton。避免1个控制器1个控制器的设置
   
5> UIBarButtonItem setBackgroundImage  // 设置按钮背景
   
6> UIBarButtonItem setBackButtonBackgroundImage // 设置返回按钮背景


/* 彩票第2天 */
1> 搭建设置界面分析
   
1> 静态单元格:1个cell1个cell的改,太麻烦,而且不灵活
   
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐