您的位置:首页 > 移动开发 > IOS开发

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"]]
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: