iOS开发 - 第02篇 - UI进阶 - 16 - 彩票(第三天)

来源:互联网 发布:网络运营提成方案 编辑:程序博客网 时间:2024/05/16 08:20

本文续:iOS开发 - 第02篇 - UI进阶 - 14 - 彩票(第一天)   iOS开发 - 第02篇 - UI进阶 - 15 - 彩票(第二天)


1、帮助


1.1 界面




1.2 实现思路


1> 自定义帮助控制器(ILHelpViewController,和之前设置界面的一样,配置模型即可)

2> 解析json数据,把字典转换为模型,展示帮助界面

3> 点击Cell,跳转到控制器,加载不同的网页

4> 自定义网页控制器(ILHtmlViewController),加载网页




1:应该点击Cell跳转到网页控制器,这里用Modal,默认是push,重写didSelectRowAtIndexPath,用Modal

2Modal出的是导航控制器,用自己的导航控制器包装下,保证一个程序就一个导航控制器

3:添加导航条左上角的取消按钮,点击取消,dismissViewController,返回帮助控制器




5> 用UIWebView加载网页(直接让控制器的View为UIWebView),网页在资源包里,通过资源包获取url,加载网页

[[NSBundle mainBundle]URLForResource:@"bjdc_howto.html" withExtension:nil];




6> 应该是点击不同的Cell,跳转到不同的网页,给网页控制器添加html模型,每一个Cell对应一个html模型,取出对应的html模型,把html模型传给网页控制器

1:点击如何领奖这类Cell,应该跳到对应的标题,使用javascript语言搞定,javascript是解析型语言,解析一行执行一行,OC是编译性语言,全部没错才能运行

2:如何跳到对应的标题,需要根据id去跳转

3window.location.href ="#howtorecharge" (#id就能跳转到对应的标题)

4:加载不同的Cell,跳到对应的标题,需要执行javascript代码,应该是网页加载完毕的时候调用,监听webView加载,用代理执行javascript代码stringByEvaluatingJavaScriptFromString


2、分享 & 关于


2.1 界面




2.2 实现思路


1> 分享界面直接配置模型

2> 关于界面需要添加一个头部视图,用XIB描述

3> 关于界面的Cell多了一个子标题,改Cell的样式为value1,就会把子标题出现在右边

4> 界面根据模型显示,给父类Item添加一个subTitle属性(Cell是根据模型去显示)




3、iOS6和iOS7适配 --- 了解


1> tableView的背景图片

2> Cell的选中颜色

3> Cell默认不需要圆角,重新设置Cell的背景View,因为系统自带Cell的背景view是圆角的

4> 清空Cell子控件的背景颜色,默认label的背景为白色

5> iOS6中Cell不需要间距,改变Cell的frame,本质调用setFrame,重写setFrame

frame.origin.x -= 10;

frame.size.width += 20;

注:怎么知道是10,打印下contentView的frame就知道了

6> 分割线,第一行不需要分割线,传入indexPath,判断是否是第一行,只有在返回每一行Cell的方法中才能拿到Cell给他设置indexPath

7> 每一组的间距

设置sectionHeaderHeight:20

iOS7注意,第一个Celly35开始,打印下就知道了

iOS7的顶部额外滚动区域contentInset.top是在原来的基础上增加64,不是直接把原来的contentInset.top覆盖,在viewDidLoad测试下就知道了,设置为64,整个tableView从左上角开始显示了,如果是覆盖,在viewDidLoad设置没有效果

iOS7怎么保证每组间距一样,减小顶部额外滚动区域设置为-15就保证第一组间距为20,目的让内容往上移动一点


4、真机调试


Xcode7之前需要证书,麻烦,步骤如下:Xcode7之前真机调试(证书)

Xcode7之后免证书调试,步骤如下:Xcode7免证书调试


1> 应用评分

2> 打电话

3> 短信分享

问题:联系人那会黑屏

原因:导航条的主题导致的,我们是不是拿到所有的导航条设置背景图片了,短信控制器也有导航条,他会跟我们自己的冲突,就会导致黑屏

解决:修改我们自己导航控制器的导航条,用appearanceWhenContainedIn,就不会影响短信控制器的导航条了

[A类  appearance]: 获取整个程序中A类的外观

[A类appearanceWhenContainedIn:B类, nil]:获取B类中A类的外观

4> 邮件分享

5> 跳转应用

如果安装了这个应用,就直接打开,没有安装,去appstory下载

url:协议头://路径

schemes:协议头 identifier:路径

openUrl跳转到对应的应用

canOpenURL是否能打开这个应用


5、block循环引用 --- 重要


block会把里面的对象强引用,可能会导致循环引用

解决办法:告诉block不要强引用里面的对象,在block里面用的指针,改成弱指针就好了

__weak typeof(self) selfVc = self;  typeof()自动识别里面的类型

如果直接用_下划线访问成员属性,相当于self->,也会造成循环引用,block里面访问成员属性最好用点语法



0 0