IOS学习之——彩票应用开发
2016-03-30 19:55
519 查看
//*************************************** 第八天 彩票 ****************************************** // 1.彩票基本框架搭建 彩票功能展示 storyboard创建彩票框架 图片导入 APPICON 启动页面展示 APPICON取消玻璃效果 自定义TabbarController实现自定义Tabbar(UIView),添加五个按钮 Tabbar按钮事件监听(TouchDwon事件),添加属性记录选中按钮 切换Tabbar的子控制器 2.自定义Tabbar抽取封装 添加5个按钮,在initFrm方法添加按钮,在layoutsubviews设置按钮frm 代理通知控制器选中按钮 3.封装自定义TabBar框架 按钮的添加就由控制器决定 在TabBar增加添加按钮的方法,不在intFrm中初始化按钮 不要btn高亮 重写setHighlighted:(BOOL)highlighted 不做任何实现 跳到下个控制器,tabbar隐藏实现 4.导航栏主题背景设置 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0) UINavigationBar *navBar = [UINavigationBar appearance]; 背景: setBackgroundImage:forBarMetrics:UIBarMetricsDefault initialize讲解 标题颜色与大小 setTitleTextAttributes self.navigationBar setBackgroundImage 与 UINavigationBar *navBar = [UINavigationBar appearance];的关系 导航控制器的push操作拦截 pushViewController 与 popViewControllerAnimated讲解 5.导航栏UIBarButtomItem的样式设置 由第4个Tab的设置跳到别一个页面演示开始 自定义导航控制里写(iOS7)navBar.tintColor = [UIColor whiteColor]; iOS6难看 UIBarButtonItem *item = [UIBarButtonItem appearance]; 设置setBackButtonBackgroundImage与setBackgroundImage(高亮与普通) 图片不用拉伸,自动会拉伸 6.自定义导航栏标题按钮(购采大厅) 购采大厅 导航栏的资讯与图片设置 合买跟单 自定义CZTitleButton 按钮围标显示右边 ,顶部旋转 self.titleBtn.imageView.transform = CGAffineTransformMakeRotation(-M_PI); self.titleBtn.imageView.transform = CGAffineTransformIdentity; setHighlighted不高度图片 //设置图片居中 self.imageView.contentMode = UIViewContentModeCenter; 7.设置模块的Cell 要以plist文件一演示? 演示静态单元格在ios6中的模样 使用代码来做cell init 方法调用[super initWithStyle:UITableViewStyleGrouped]; SettingItemType添加个枚举(提下,但不是最终选取的方法) 添加SettingItem模型,添加icon title vcClass 添加SettingArrowItem SettingSwitchItem 在cell中显示 抽取cell 设置item添加不同的accessView 循环引用会出回题,如果是SettingItem时,要清空accessView //*************************************** 第九天 彩票 ****************************************** // ⑥⑦⑧⑨⑩⑪⑫ 一、彩票基本框架搭建 1.storyboard创建彩票框架【UITabbarController + UINavigationController】 2.自定义Tabbar ①自定义Tabbar控制器,在Tabbar控制器的viewDidLoad方法写下面的步骤 ②自定义Tabbar,创建一个UIView,取名叫mTabbar,然后添加五个按钮上去。 //UIView mTabbar = [[UIView alloc] init]; // 然后往mTabbar add 5个按钮 ③然后将tabbar添加到系统的tabbar上 //获取系统的tabbar [self.tabbar addSubView:mTabbar] ④监听自定义tabbar上按钮的点击事件来切换tabbar控制器的子控制器 ⑤设置自定义tabbar里button的选中效果 二、抽取自定义tabbar 1.写一个类继承UIView,类名为CZTabbar 2.在CZTabbar的initWithFrame方法中初始化五个按钮 3.在CZTabbar中对五个按钮进行布局 4.监听按钮事件,设置选中按钮 5.代理通知控制器按钮的选中 三、优化自定义tabbar 1.去除自定义的initWithFrame的方法 2.在CZTabbar 增加一个 添加按钮的方法 //addBtnWithNormalImge:selImg 因为添加按钮应该让外界来添加,不应该自己来添加 3.在自定义的tabbar控制器,循环往tabbar添加按钮图片 4.从新回到CZTabbar的layoutSubivews方法,重新修改布局代码 5.运行按钮的选中状态,自定按钮,实现setHighlighted方法,空实现 /* @implementation CZTabbarButton : UIButton -(void)setHighlighted:(BOOL)highlighted{ //空实现 } */ 6.要改按钮的监听事件为TouchDwon 四、设置导航栏样式 1.设置导航栏背影图片 "导航栏背影图片设置有两种方式" ①局部配置: 获取导航控制器的navigationBar属性,来设置导航条的背景图片,'这种只能对单个导航控制器有效' 如 /*[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];*/ ②全局设置: 通过[UINavigationBar appearance] 获取的导航条对象可以设置应用的 "所有导航条" 的样式, 如: /* UINavigationBar *navBar = [UINavigationBar appearance]; [navBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault]; */ 2.设置状态栏的样式 "设置状态栏的样式有两种方式" 方式1: 由控制器决定状态样的样式,在控制器实现【-(UIStatusBarStyle)preferredStatusBarStyle】方法 /* 注:如果有导航控制器,应在导航控制器实现【-(UIStatusBarStyle)preferredStatusBarStyle】 这种方式要指定storyboard中的每个导航控制器的类 指向 自定义的导航控制器类 */ 方式2: 由UIApplicatoin设置状态栏样式 ①在info.plist文件中添加View controller-based status bar appearance = NO //为什么要配置plist文件,因为xcode5以后创建的项目,状态栏的样默认是由控制器决定 ②[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; "+initialize方法" ①背景和样式只要调用一次就好了,把主题的设置转到 "自定义导航控制器" 的initialize方法中 ②initialize 方法在类第一次使用的时候被调用 3.设置导航条的标题大小与颜色 ①获取全局配置的 UINavigationBar 对象,调用【setTitleTextAttributes】方法来设置; /* NSDictionary *titleAttr = @{ NSForegroundColorAttributeName:[UIColor whiteColor],//字体颜色 NSFontAttributeName:[UIFont systemFontOfSize:20]//字体大字 }; [navBar setTitleTextAttributes:titleAttr]; */ 五、添加导航条按钮 1.添加 "购买大厅" 的导航条右上解 '资讯' 按钮 有文字有图片,使用UIButton实现,UIBarButtonItem要么只能放文字要么只能放图片 按钮中的 '文字与图片的间距' 可以在storybaord中通过属性里的【edge:title】来设置 2.添加 "合买跟单" 中 '标题按钮' 的实现 如图 ①默认按钮的图片在左边,文字在右边 ②现在按钮的文字要在右边,这里可以通过自己义按钮来改变图片和文字的显示位置 只要实现下面两个方法即可 //【titleRectForContentRect】标题的位置与尺寸 //【imageRectForContentRect】图片的位置与尺寸 // 实现setHighlighted,不高亮图片 ③点击 '标题按钮' 按钮图片要旋转,调用Button的imageView的transform属性进行旋转即可 3.添加 "我的彩票" 导航条右边的 '设置' 按钮 》设置的文字大小与颜色 *使用[UIBarButtonItem appearance]设置"全局的导航条"右边按钮的文字大小与颜色 /*代码摘要 *[barBtnItem setTitleTextAttributes:itemsAttr forState:UIControlStateNormal]; */ 六、设置导航控制器在显示新控制器时 "隐藏" Tabbar 解决方案 1.storyboard设置,此时方式比较麻烦 2.代码设置 *在自定义的导航控制器中,拦截【pushViewController:animated:】此方法,当有新的控制器推出时调用 *在拦的方法中设置viewController.hidesBottomBarWhenPushed = YES; *还有个【popViewController:animated:】,此方法,当有控制器移除是调用 七、设置导航控制器返回按钮的样式 》导航控制器的返回按钮的箭头是白色的,但默认是蓝色 》调用[UINavigationBar appearance]的tintColor属性为白色即可 八、实现 "设置页面" 》经分析,不使用静态表格,使用代码方式实现 1.创建一个继承表格控制器的 '设置控制器' 【@interface CZSettingViewController : UITableViewController】 2.创建模型【CZSettingItem】 3.显示数据 4.在 '设置控制器' 中实现下面方法,目的返回组样式的表格 /* //创建表格控制器时会调用此方法 -(instancetype)initWithStyle:(UITableViewStyle)style{ //不管传什么,都返回组样式的表格 if (self = [super initWithStyle:UITableViewStyleGrouped]) { } return self; } */ 5.添加CZSettingItem的类型,实现不同类型的cell,如箭头cell,开关Cell ①CZSettingArrowItem ②CZSettingSwichItem 6.重新实现表格显示的方法,根据CZSettingItem的类型来添加箭头还是开头 7.抽取自定义的Cell,实现数据模型设置时,显示表格数据 *为什么要抽取,因为【tableView:cellForRowAtIndexPath:】方法已经写太多代码 九、实现表格点击进行不同的控制器 》在CZSettingItem添加个assign的Class属性,用来存放控制器的类型 //为什么用assign,因为Class是结构体 》在didSelected方法中,通过Class创建控制器,并使用导航控制器推出 十、实现设置表格不同cell点击的不同操作 》直接在didSelected方法里判断索引来实现不同操作不实际 》解决方案 给CZSettingItem添加一个block,预存要操作的 '代码块' "复习block" 1.Block与函数的区别 》Block是一块代码块 ①函数只能在方法外部定义,而block可以在方法内部和外部都能定义 ②Block与函数都可以有返回值 2.Block定义复习 ①无返回值,无参数Block '打招呼' ②无返回值,有参数Block '传数字打印' ③有返回值,有参数Block '加法运算' ④无返回值,无参数Block的重命名 'operation' "实现不同cell点击的不同操作" 1.在CZSettingItem头文件中定义一个typedef void (^OperationBlock)(); 2.在CZSettingItem添加一个OperationBlock属性 3.在表格的didSelected中判断,如果block有值,执行block的代码,如更新 4.实现更新,"讲解版本更新原理,并模拟实现" 十一、添加 "组模型CZSettingGroup",然后 "组模型"添加到 "数组" 》目标,方便以后抽取 》组模型里添加头部标题和尾部标题属性,用于设置每组表格的加头部标题和尾部标题 十二、抽取父类,其它类似于 "设置控制器" 可以继承父类来使用 1.抽取一个CZBaseSettingViewController 2.把CZSettingViewController的代码copy到CZBaseSettingViewController中 3.copy后删除CZBaseSettingViewController的viewDidLoad方法 "和" 更改相应的类名 4.把表格的数据属性'【cellDatas】' 暴露在头部文件中,实现懒加载,这样子控件器只要在自己的viewDidLoad添加数据即可 》实现:推送和提醒 》实现:推送和提醒-开奖号码推送 AwardNumPush 》实现:推送和提醒-中奖动画 AwardAnimation 》实现:推送和提醒-比分直播提醒 ScoreLive 》实现:推送和提醒-购彩定时提醒 BuyTimerWarn 十三、表格结节 》抽取CZSettingCell的accessoryView懒加载 》设置cell的selectionStyle属性,开关不能有点击效果 》开关按钮保存,使用settingItem的title为key保存到用户偏好设置中 》设置表格的背景颜色 /* self.tableView.backgroundView = nil; 在ios6中backgroundView的优先级大于backgroundColor,所以要设置backgroundView为空,不然显示不出背景图片 self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg"]] */
相关文章推荐
- IOS学习之—— 图层与核心动画
- iOS新特性
- IOS学习之——触摸事件处理
- IOS学习之——手势解锁
- ios开发--GCD使用介绍:4-延迟执行操作
- iOS之Nib和Xib以及storyboard(故事版)
- IOS学习之——画板 涂鸦
- iOS storyboard中设置TableView的headerview 和 footerview
- IOS学习之——背景平铺
- IOS学习之——位图上下文 -- 水印图片
- IOS学习之—— 定时器 NSTimer 和 CADisplayLink 类的使用
- IOS学习之——图形上下文
- IOS学习之——Modal( 登陆,注册)
- IOS-推送通知
- IOS学习之——静态单元格
- IOS学习之——通知中心NSNotificationCenter
- IOS学习之——延迟执行
- IOS学习之——自定义代理delegate
- IOS学习之—— xib的用法--自定义View
- IOS学习之——自定义的Cell (代码)