网易彩票

/* // 设置启动图片和ProductIcon,状态栏,自定义tabbar. -------

1.xcode5之后图片交给images.access管理,先设置images.xcassets,启动不全屏由启动图片造成,图片多大界面显示就多大,ios7ios8没有R4启动图片,自动加载iOS7 2x的图片,改json,将ios5,6复制一份(有图片)。

2.启动全屏(隐藏状态栏)TARGET里勾选launch xXXX即可;iOS7.0后状态栏默认交给控制器管理,info.plist里增加属性(在最下面)viewController-based states bar  NO ,把状态栏交给UIapplicaton(启动完显示);

3.appIcon下的storyBoard属性里勾选属性(自己渲染,没有玻璃球效果),有缓存。Xcode4里应在info.plist(全局的配置文件 )里添加属性icon already XXX -> yes 设置此效果.
 3.1 干掉单视图自带的和storyBoard里的viewController,由于navigationController的title由栈顶控制器确定(是个弊端)所以跟控制器为tabbarController,拖一个tabBarController,干掉子控制器,再拖一个NavigationController,干掉子控制器,复制多个,连线。
 3.2 两种分发:MVC和模块。如果tabbarImage要显示的图片上面有文字,不能在storyBoard里设置每个试图控制器的title和image,自定义View替换系统tabbar.
 4. 想要自定义tabbar(继承UIView)替换系统tabbar,需要拿到系统tabbar(self.tabber),创建tabbarVC类来管理stroyBoard创建的tabbarController,放main(主要文件夹)里,在tabbarVC里拿到tabbar
 4.1 使storyBoard里的跟试图控制器创建出来就是自定义的控制器,修改custom  Class为自定义的类。
 5 1.在viewDidLoad里创建自定义tabbar(UIView),添加到VC的view上,2. 删除系统tabbar 3. 循环创建按钮添加到tabbar,设置normal图片和selected图片,设置frame,添加事件action,定义一个UIButton属性,记录当前按钮,取消上个按钮被选中,设置当前按钮为选中;4. 默认第一个被选中(if(i==0)调监听方法)。5.为了不重复加载数据,把选中状态改为不可用状态(可以设置为其它状态的)
 6. 设置按钮一点击就切换。1.为了一点击按钮不变灰(btn.adjustXXX = NO)2.(touchDown)手指按下会触发setHeight方法,系统对图片做一些操作.
 7.为了一点击按钮就变色。设置监听事件为touchDown,一按下去就改变状态,但是系统会调用setHeight方法更改图片,所以自定义按钮(tabbarButton 继承UIbutton) 重写setHeight(循环创建自定义按钮)
 8.切换子控制器。设置按钮的tag作为切换控制器的索引self.selectedIndex
 
 */
/*  // 封装自定义的tabbar,创建按钮在里面,为了扩展性,tabbar提供创建按钮的方法,根据子控制器的个数循环创建按钮 - - - - --
 1.控制器不该知道tabbar里有几个按钮,为了实现MVC模式,把创建按钮放在自定义tabbar里,控制器创建tabbar时按钮也应该创建出来(在initWithFrame里( 调用init会自动调用initWithFrame))1.2 导入自定义的button类 1.3 创建按钮,监听方法和记录按钮的变量都剪切到自定义tabbar里
 2.在init里拿到的frame都是空(init)(除了传来的(initWithframe)),所以在layoutSubviews里设置子控件的frame(遍历self.subViews拿到按钮)
 3.当按钮被点击时(btnClick里)通知VC切换(tabbarVC来管理自己的子控制器),点击按钮切换子视图控制器由tabbarController处理 通知tabbarController,(代理)tabbar里自定义协议() 按钮被点击,通知tabbarController切换视图,同时切换状态为不可用enabled = NO;
 点击按钮 从哪到哪  tabbar里创建按钮,tabbarcontroller里只创建tabbar,实现代理切换子控制器,代理方法为- (void)tabBarDidSelectBtnFrom:(NSInteger)from to:(NSInteger)to,把btn.tag传进来,作为切换的索引。

4.为了更好扩展性,在tabbar里提供创建按钮的方法,在tabbarVC里创建完tabbar后,循环创建按钮(根据子控制器的个数)。方法addBtnNorImage:(Nsstring *)norImage withSelImage:(Nsstring *)selImage 需要传入图片,不传图片(方法里没有循环)就不能设置不同Btn的image。tabbarVC有几个子控制器就创建几个按钮(与系统一样),原来initWithFrame创建按钮代码剪切到方法addBtnNorImage:(Nsstring *)norImage withSelImage:(Nsstring *)selImage里。设置btn.tag 放到layoutSubView里。
 
 */

/*
 1. 第二次封装是为了更好的扩展性(btn数目)
 2. 提供一个创建(添加)按钮的方法,在tabbarController 中创建自定义的tabbar后循环调用此方法,调一次创建一个按钮,按钮frame在layoutSubview根据i设置
 3。不仅扩展,同时创建按钮是在tabbar的方法里,只是在tabbarVC里调方法,也保证了封装性
 4.在调方法创建按钮时利用循环把不同的图片传过去,方法要两个参数
 */

/*// 设置导航条主题 -- -------
 
 1.设置导航条主题,在tabbarVC里拿到主题设置主题背景(记得判断iOS版本),一变都变   1设置背景(记得适配 ) 2 setTitleTextAttrabutes 设置title文本属性 2.1 字体大小(NSFontAttriXXX)2.2 字体颜色(NSForegroundColor),主题一变,所有都变,设置每个title(不同),只好在storyboard里设置。
 */

// 导航栏的其它设置(btn图右文左,点击按钮出现小视图,编译器适配)---------------

/*
 -1. 设置状态栏为白色,applicationDidLaunch里设置application.statueBar = UIStatuesBarStyleLightContent;
 0. barButtonItem只能显示图片或文字,所以拖button上去,如果只有图片或title,用barButtonItem即可。
 0.0 设置按钮title和image的间距(Edge),设置按钮宽度
 0.1 系统按钮支持图左文右,(系统按钮不能满足需求)要想图右文左,自定按钮设置位置(重写两个方法,返回值为CGRect,titltRectXXX,imageRectXXX),设置title和image的位置,按钮类来管理stroyBoard里的Button。
 0.2 设置位置:1. 高度与btn相同,所以x=0,y=0,height= btn.size.height. 2. 计算width:boundingXXX返回title的CGRect可以拿到其width,需要定义属性UIFont 拿到title字体的大小,在initWithCoder(xib和storyBoard会调用)和initWithFrame(init和initWithFrame会调用)里拿到title字体(写死),并显示此大小字体。btn里image默认会拉伸,设置imageView的内容模式contentMode为center (self.imageView.contentMode = UIViewContentModeCenter)
 0.3 点击按钮出现视图,在控制器里监听按钮的点击事件(视图归控制器管),viewDidLoad里创建视图(隐藏),点击后显示,再点击隐藏(定义一个UIview属性)。尖尖改变:定义一个flag(BOOL),btn.imageView.transform = CGAffineTransformMakeXXX;
 1.iOS7.0和iOS6.0适配(title bounding 7.0之后)
 2.编译器xcode4和xcode5适配[UITextAttributeFont 6.0以前]; title bounding 7.0之后(Xcode5之后),所以编译器不认识,适配编译器
 3. 适配编译器(可以不用倒入AVailable头文件)#ifDef _PHONE_7_0 (有为真)   #else   #endIf
 */

/*
 // 我的彩票 模块 引出iOS6不全屏(Loginbtn的拉伸) - - - - -  - - - -
 -1. iOS6上面有状态栏,所以tabbarVC少20,tabbarVC下面有tabbar,所以NAVigationController少44,所以NavigationC的子视图少44.iOS7,没有状态栏影响。
 0.iOS7属性edgeForExtendedLayout,默认为UIRectEdgeAll,让iOS7也不扩展即可(storyboard里去掉Extend Edges),lauoutSubview也去掉
 1.iOS6需要设置edgeForExtention
 2. 登录btn(storyboard里)属性image,图片多大(不会拉伸)就为多大,所以设置background属性,拉伸后很挫。image可以拉伸(storyboard里设置stretching 0.5 0.5 0 0);
 3.在storyBoard中只能设置image的拉伸位置,其它控件(设置的是父view的拉伸位置)只能通过代码
 4.在viewController中设置按钮拉伸(loginBtn.resizbleXXX 返回newImage)
 
 */

/* // 设置push后隐藏系统tabbar,自定义导航控制器管理sotryboard里5个(不重复勾选,导航条主题设置放导航控制器里) - - - - - - -
 
 0.点击按钮push到另一个界面(将按钮拖向另一个控制器,选择push)
 1.将自定义的tabbar添加到系统的tabbar里,在storyboard里勾选HiddenBottomBar隐藏 系统tabbar会隐藏,自定义的tabbar也就隐藏了(注意自定义tabbar的frame)。但是每个控制器都需勾选。
 2.为了不重复勾选隐藏tabbar,自定义 控制器的父类BaseViewController() 来设置hidden Bottom Bar但是其它控制器得继承baseViewController,但是baseViewController继承自UIViewController, 其它控制器也就继承了UIViewController(2,4是UITableViewController),所以不行. push方法为导航控制器所有,可以在push里“做事情”(设置hidden Bottom Bar),所以自定义导航控制器(弄一个类继承自UINavigationController,来管理sotryboard里5个NavigationController),重写push方法
 3.优化 设置导航条主题原来在tabbarController里,可以放在自定义的导航控制器里NavigationController 但是viewDidLoad会调用5次,所以在initXXX里设置
 4.如果出现问题了在左边搜索一下,再找。
 */

/* //所以设置barButtonItem主题颜色  [navBar setTintColor]-----
 
 = = = = = = = = = = = = = = = = = = = =  = =
 1.导航栏左右如果是按钮设置导航条的标题颜色(setTitleTextAttrXXX)后是白色,如果是barButtonItem则是蓝色,点击barButtonItem,在storyboard里设置tintColor即可,但是不能一劳永逸,所以设置barButtonItem主题颜色(拿到主题,setTitleTextAttrXXX)为白色,barButtonItem的title就变白了。
 2.适配iOS6,设置barButtonItem背景(setbackgroundImage)
 3.设置返回按钮的背景(setBackButtonBackgroundImage)
 4.iOS7中返回尖尖和barButtonItem的图片还没变白色(还是蓝色),需设置导航条的主题(setTintColor)
 5.所有设置在自定义导航控制器里
 */

/* // “设置”界面搭建(不用静态单元格)-------
 
 1.静态单元格(xib或storyboard 上设置的cell)iOS6和iOS7不同,自定义也比较难弄,开发中不用(点击tableView,storyboard里选择static cell),点击cell,style选择basic ,image设置cell上文本前面的图片(小??),指示器accesss 选择disclosure indcator,在左边点击这一组,设置rows为3,点击tableview,设置section为2(1. iOS6里不全屏(分坨)2.静态cell,如果是系统自带的(basic)不能往上面拖东西,需改成custom,但是自定义cell,拖lable,button对齐操作很麻烦)
 2.代码(监听设置按钮的点击)把拖拉的tableviewController干掉(代码创建目标控制器table VC,创建目标控制器时用init,在目标控制器里面重写init方法[super initWithStyle:]设置分组group)。
 */

/*  //显示cell上的内容 3种-只用模型-每个cell对应一个“模型类”对象---
 ======每组也是模型===========!!!!!!!!!!!
 
 0.显示cell上的内容,1. 写死(判断,如果时第0组第0行..设置cell..第0组第1行..设置cell..   如果点击cell触发方法调到另一个界面还得判断点击的是哪个cell)
 1.把Cell显示的内容存到plist文件里(每组放到一个数组里,所有组放到大数组里 ,在类里定义一个数组属性,加载plist,没一行是NSDictionary,key分别为icon,titlt,access).设置cell.imageView.image 就是文本前面的图片,accessoryView可以设置指示器的图片。点击cell, 需要把目标控制器存到plist里,取出目标控制器是Nsstring,需要把string转成类(Class destClass =  NSClassFromString(XXX))
 2.每个单元格跳转到下个视图控制器也存到plist里不好,1。容易写错控制器,编译时不报错,但是没有这个类。2.点击单元格执行的代码不能放到plist里(OC不能将字符串转化为代码)
 3.只能通过模型了,每个cell对应一个“模型类”对象,icon,title,accsee,destVC(Class destVC)为属性,提供快速创建方法(创建cell对象,初始化内容(title,icon,access,destVc),添加到小数组,在添加到大数组里)
 
 4.每组放到一个小数组里,2个数组放大数组里(第一种)
 5.每组就是一个模型,(页眉,页脚,所有items),每个单元格也是一个模型(title,icon,Class destVC),创建的cell模型对象直接放到group模型的items里,把group模型添加到数组属性里。
 6.好处:阔展性强,随时更改tableview布局(第一组和第二组交换位置只需改一下group模型添加到数组的顺序即可。第一组里的item(cell),直接添加到第二组就改变了item(cell)的位置),plist不行麻烦。
 7. 创建模型(cell)时传入图片,title,descVC等,每组也时模型,每组不需要实例方法(headerTitle和footerTitle在tableview方法自带方法返回就显示了),只要属性(header,footer,items)即可(在创建group时赋值),item(cell)需要创建很多,所以提供快速创建并初始化方法。
 */

/*  // cell 的封装 - 重写set方法- 设置辅助视图 多态- 不是尖尖没必要传destVC 代码优化- - - - -
 
 6.cell 的封装 :控制器不该知道cell是怎么设置的。自定义一个类继承自UITableViewCell,一个NSProductItem模型类属性item用来接收cellForRow方法里从group里解析出来的NSProductItem(里面时title,icon,destVC,access等),重写set方法(里面根据传来的item设置cell的textLable,imageView),一个创建cell的方法,cellWithTableView:(UITableView *)tableView 在cellForRow里调用创建时会把tableView传进来。
 
 7. 设置辅助视图:2种:拿到模型,添加尖尖(1.模型里添加属性,创建时设置是尖尖还是switch,用enum(NSProductItemType type)。2.多态,创建2个子类继承自NSProductItem,在cell显示时(cellForRow里会把item赋值给自定义cell类的属性item,自动调用set方法,在set方法里判断传过来的item是哪个子类,如果是switch,accessView = [[UIButton alloc]init];由于cell的循环利用,所以cellForRow会调用多次,setItem方法会调用多次,switch会创建多次,性能不好,所以定义属性,用懒加载(只创建一次,延迟加载))进行判断是哪个子类),注意:循环利用的缺点:cell多了之后,即使没有设置accessView,但是滚动tableView后又添加的cell可能有accessView,因为会利用其他cell的空间资源?(有cell设置了accessView),所以判断如果是根模型(不是子模型),accessView = nil;
 8.设置单元格selectionStyle(选中样式)为没有,设置NSProdctItemSwitch的destVC为nil;(控制台提示push one nil VC),所以在didSelected方法里判断,如果是NSProductArrowItem才创建item.destVC(不是不管)。
 10.优化,如果是switch,没必要传destVC,只有是尖尖才有目标控制器,子类特有的,所以父类提供的快速创建的方法不用传入目标控制器,把Class destVC属性放到子类NSProductArrowItme里。NSProductArrowItme里提供的快速创建方法带上destVC.
 */

/* // block - - 点击单元格执行代码放在Block里- - - - - - - - - - -
 
 0.保存代码3种(函数,方法,block)OC方法里不可以定义函数,swift里可以,block可以在方法里定义并使用(性似指向函数的指针(一个是*,一个是^,也可以 typedef  int (^SSBlock) (int,int); 定义block类型),本质像宏(#define iOS7 ([[uidevice currentDevice].version doubleValue] >= 7.0))(调用block就是把代码块拿过来执行))。block格式(inline...)
 1.点击单元格执行代码放在Block里(保存代码)
 2.block作为属性或函数的参数记得先定义宏!修饰词用copy(strong)。创建item后设置block属性(父类里)的代码块(为block赋值),点击cell后取出item,判断item的block如果不为空,执行block
 3.延迟执行用dispatch_after(){};使用第三方MBProgressHUD showMessage Hid showSuccess
 */

/* // 网格界面搭建 - - - -- - -- - ---
 
 1. 网格也有缓存机制,但是从缓存池中找不到item,因为和tableView不同,item(cell)不需要创建(不能初始化identifier),根本找不到,不用判断,系统会自动创建(必须先注册一个继承自UICollectionViewCell的类并设置布局样式),利用UICollectionVC同tableViewC,自带collection(tableView),自动设置代理,不用添加到父视图
 2. 网格布局需要layout参数,其他不是网格,重写init方法(不让外界知道我的布局样式),cell创建出来默认为黑色,cell的大小,最小行/列间距由布局确定(itemSize,miniXXX)。headerReferenceSize距离上面的高度,footerReferenceSize距离下面的高度(拖拉之后)
 
 */

/* //  网格内容显示-json-创建模型,自定义item 传入模型(封装)--xib
 
 1.本地JSON文件保存每个item的内容(title,icon,ID等)json同plist,见到NSDictonary(json里是{})就建立模型product,每个模型对象对应一个item.
 2.给模型提供快速创建方法传入一个字典进行设置(KVC(弊端:模型中的属性必须和json里的key一模一样(第三方可以搞定)))
 3.在collectoniViewController里定义一个数组,把所有模型放到CollectionView的数组
 4.每个item一样 新建xib来布置item.创建item类来管理xib,定义一个product模型属性,重写set方法接收传进来的模型参数,同tableviewCell接收item模型,根据模型,设置自定义cell的image,label等。
 5.UICollectionViewCell类来管理xib小格子,一个类管理一个xib,xib是UICollectionViewCell,所以类继承UICollectionViewCell;
 6.传来模型给xib小格子,所以UICollectionViewCell定义属性接收模型
 7.item 找不到就会创建注册的item,如果cell是xib描述的,先注册xib(registerNib不该用UICollectionViewCell注册(找不到setItem方法)),并且xib中应放的是UICollectionViewCell(不是UIView,需要给nib设置identifier(UIView没有identifier));
 8.icon圆角 1.Quartz2D 2.设置imageView的图层 ,设置一次,在JWProductItem 的initWithCoder里(但是不行,内部将“超出部分除掉”改为NO,所以不管用),在awakeFormNib里设置cleanXXX)
 9.tableView Cell的封装和collectionView item的封装比较重要 - - - - - -
 */

/*  // “推送和提醒” - - - - - - -
 0.先创建一个类pushViewController继承自UITableViewController(推送界面是tableView)
 1.两个界面几乎一样(直接copy)改interface 类名和头文件以及 数据的加载
 (cell的创建用的是模型类,只改title(数据)即可,数组的懒加载和tableview的方法一模一样)
 2.点击“推送提醒”跳到下个界面,倒入头文件,在初始化“推送提醒cell”时传入目标控制器类;
 哦。如果cell后面辅助视图不同(变为label了),定义一个子类继承自根模型类(NSSettingItem)(创建cell时用label子类来创建),在自定义cell的setItem里判断如果时label这个子类,创建label给accessView.
 4.出现的错误:重定义base类了,最好把类名都定义好
 5.爽,全部继承自BaseViewController。
 7.在自定义cell里设置label内容,在对应的tableViewController里创建item模型,自动调用baseviewcontroller里显示单元格内容,先加入父类的数组显示,然后设置item(根据模型设置单元格内容) 来到settingCell里 在父类里倒入头文件子类就不用倒入了
 */

/* // 存储数据(switch状态)----
 1.在自定义cell里switch懒加载方法(在此创建的switch)能拿到所有switch,监听所有改变(一劳永逸),保存(ud)tbn.isOn,每个switch的isOn对应一个key(cell的title)。(记得显示时拿出来)
 2.保存数据:1.归档。(保存对象)2.plist(ud    synchronize立即存储(同步))
 3.在设置辅助视图时拿出来 setItem(self.switch.isOn = [ud boolForKey];)
 4.“起始时间”label上的值同样,创建label时监听值改变,把用户设置的时间保存起来,setItem里拿出来显示即可。
 
 */
 
 /* // 帮助界面 -- - -- -- - -
 
 5.以模型的title作为key,如果title相同(一般不同)可以在setttingItme模型里定义属性作为保存switch状态的key ,创建cell时传入属性值
 5.1 帮助界面(如何领奖。。。)继成baseVC,点击如何领奖跳到UIViewController (视图作为webView).
 6.webView(加载网页用loadRequest)显示弹出(2方式)1.在SettingItem(自定义cell)里定义enum showType,添加enum属性,创建cell时传入type,在didSelectRow判断,设置弹出类型。2.重写父类里的didSelectRow方法,点击cell,来到重写的方法里,创建目标控制器(webViewC),直接presentXXX(一模态弹出)
 7. 单元格比较多用json(提供有)加载内容,(也可以用复制创建settingItem),加载json数据用模型,一个字典对应一个模型,在Model文件夹下创建字典对应的模型JWHelp(提供快速创建方法接收NSDictionary(json解析出来是数组里放字典)),在helpVC里加载,json为数组,所以定义数组保存数据,遍历json解析出来的数组拿到字典,根据字典循环创建模型,把模型加到临时数组,再赋值给HelpVC里定义的数组(数组里放json模型)。要显示cell内容,继续用模型,遍历self.help,创建item(cell)(item模型提供有方法,每个item模型对象添加到临时数组,把临时数组赋值给group.items)
 8.ViewDidLoad里的网页写死了,应该定义属性 ,要加载的网页在Json 里,json里的数据在helps数组里,数组里放的是JEhelp模型,模型有个属性叫html,在htmlVC里定义字符串属性html,在创建时(helpVC的didSelect里)传来html 但是有对应的网页还没有对应的title(如果要设置title),所以在htmlVC定义模型,接收模型help里有html也有title
 9.在UE里打开html,解释性语言,不编译,执行到错误才报错,加入控件,定义方法,监听按钮点击触发方法,加入一句js代码跳转到指定行根据id(window.location.href = "#id",记得加js标签对,对里面放函数,下面监听按钮点击执行函数),在webView加载完执行(跳转),设置webView的代理,实现webViewLoadFinish执行js代码(1.生成js代码,拼接Id到js语句。2.执行webView stringByEvaluatingJSFromString:)
 10.总结:帮助界面(helpVC继承baseVC)定义数组helps,解析json,创建模型,把模型加到helps里,遍历数组,循环创建item单元格,把单元格加到父类数组,显示出来,重写didSelectRow方法,创建HtmlVC以模态弹出,且把当前模型传给htmlVC,设置显示webview界面和title
 
 */

/* //
 1.关于界面的cell上显示“电话”,设置cell的style为value1,如果在setItem里每次设置detailLabel,每个cell上都会有电话号码,所以在父模型(SettingItem)里定义一个属性subTilte保存电话,在setitem里设置detailLabel为self.subTitle,在(aboutVC)创建"客服电话"cell时设置subTitle.
 2.subTltle有值就显示了,没值就为空
 3.上面的图片跟着滚动,说明是headerView;搞个xib描述它,创建类管理xib,提供实例方法(return [nsbundle mainBundle]loadXib:)
 4.关于界面继承自baseVC,创建cell模型即可。
 */

/* //  iOS6 7  cell的适配 - - - - - - - -
 
   1.iOS6里设置背景,所有界面都有背景,在base里viewDidLoad平铺 设置view的背景有2种:1.backgroundColor = [UIColor colorWithPattenImage:]2.backgroundView(优先级高). iOS6tableview为分组样式时系统会自动设置backgroundView,盖住了backgruondColor ,清空backgroundView = nil即可;
   2.iOS6选中单元格为蓝色,设置点击背景在自定义cell里创建完时,只需要设置一次,重写initWithStyle方法进行设置(self.selectedBackgroundView,创建空view,设置背景(RGB))。pch 里可以typedef 方法. JWColor(r,g,b) [UIColor colorWithRGB((r)/255.0 (g)/255.0 (b)/255.0)]
   3.iOS6默认状态分组cell的背景颜色为第一行圆角(分坨),把系统默认的cell的背景覆盖,在重写的initWithStyle方法里,self.backgroundView = [UIview alloc]init].backgroundColor(白色);
   4.iOS6默认单元格textlabel和detailTextLabel背景颜色有点深,设置textLabel.backgroundColor = [UIColor clearColor];
   7.iOS6cell不全屏,在initWithStyle里设置cell.frame,但是不管用,cell的frame由系统设置(重写setFrame方法),cell显示内容是显示到contentView上(其实,看到的cell是contentView,距离左边为10),要想全屏2种:1.在setFrame里将cell宽度变宽frame.size.width +=20,frame.orign.x -= 10; 2.改变contentView的宽度。(iOS7不需要设置)
   8.分割线。有联系人添加分割线,没有不管。创建UIView高度为1作为分割线,向cell添加子控件只能加到contentView里。在layoutSubView里设置“分割线的frame”,与contentView同宽。但是,如果有switch的cell的分割线没有连通(短了),switch不属于contentView,contentView宽度变小,所以设置分割线的宽度 = [UIScreen mainScreen].bounds.size.width.分割线变淡(UIView.alpha = 0.4).celForRow里判断是不是每组的最后一行(有indexPath),如果是就记录下来(重写set方法),在set方法里设置隐
       (iOS7不需要设置)if(!iOS7){执行代码};

*/

时间: 2024-07-28 13:40:47

网易彩票的相关文章

(素材源码)猫猫学iOS(四十六)之网易彩票幸运大转盘

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 素材源码地址:http://download.csdn.net/detail/u013357243/8713827 效果 代码: NYWheel NYWheel.h // // NYWheel.h // 网易彩票幸运大转盘 // // Created by apple on 15-5-18. // Copyright (c)

iOS菜鸟成长笔记(2)——网易彩票练习(1)

距离上一篇<第一个iOS应用>已经有一个多月了,今天来和大家一起学习和分享一下一个小练习<网易彩票> 首先我们向storyboard中拖入一个TabBarController和5个NavigationController,如下: 我们先来看看什么是导航控制器 1.导航控制器 "如果应用程序有多个内容视图层次,就需要能够在它们之间进行切换.为此,可以使用专门的视图控制器:导航控制器 (UINavigationController).导航控制器管理在一系列视图控制器中向后和向

iOS 网易彩票-5设置模块三(常用小功能)

该篇文章中,用到很多iOS开发过程中常用的小功能,当前只是将这些功能集成到网易彩票的设置中.iOS-常用小功能介绍,请参考我的另一篇文章: iOS 常用小功能 总结:http://www.cnblogs.com/jys509/p/4805030.html 关于 效果图 思路分析: 使用self.tableView.tableHeaderView 自定义组头部,通过加载xib来实现 评分支持,使用[iOS 常用小功能 总结]中“应用评分”小功能 客户电话,使用[iOS 常用小功能 总结]中“打电话

iOS开发——开发实战OC篇&amp;网易彩票实战总结(错误)

网易彩票实战总结(错误) 错误总结之类的实现 经典错误之重复定义与导入错误 经典错误关于父类的实现 通知对象: 控制器的定义 Xcode新特性,launchScreen.XIb启动图片的设置 在launchScreen.XIb中添加一个UImageView并且设置约束,然后设置对应的图片就可以 关于launchScreen.XIb底层的实现:其实就是屏幕截屏 导航栏样式:根据不同界面实现不同样式的导航栏. 导航栏增加按钮等控件: 方法的调用 自定义控件 修改插件: MAC1/ 用户 /cocos

iOS开发——实战总结OC篇&amp;网易彩票开发知识点总结

网易彩票开发知识点总结 关于网易彩票开发中遇到了不少的坑,弄了好久才弄懂,或者有些犹豫很久没用就不记得了,所以这里就总结了一下,希望以后不会忘记,就算忘记也能快速查看! /***************************************&.设置状态栏样式(白色) 两种方法******************************************/ 1 -(UIStatusBarStyle)preferredStatusBarStyle 2 3 { 4 5 if ([sel

iOS UI进阶-1.3网易彩票设置模块

概述 基本上,每一款APP都有相应的设置模块.怎么设置才能更灵活和通用呢,这也是大家一直思考的.下面说说在网易彩票中,设置模块的设置思想. 基本上有三种方案: static cell(呆板,完全没有动态) 使用代码,条件判断逐个编写(麻烦,代码冗长) 使用plist加载(能够动态配置跳转控制器,不能配置请求代码:由于使用字符串配置跳转控制器名,容易出现运行时错误) 使用模型封装每个cell的数据(item),使用Class作为跳转控制器属性(这样就能经过编译检测) 最终我们使用的是第4种方式来实

仿网易彩票代码实现

仿网易彩票代码实现 一.设置全部导航条的背景 // 取出全部导航条 UINavigationBar *bar = [UINavigationBar appearance]; // 设置全部导航条的背景图片 [bar setBackgroundImage:[UIImage imageName: @"navigationbar_background.png"] forBarMetrics:UIBarMetricsDefault]; // 导航栏上有一层BackgroundImageView

仿网易彩票思路

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

iOS UI进阶-1.0网易彩票框架搭建

仿网易彩票,最终要做成的效果如下: 一.分层搭建 1.新建一个项目,Lottery.只支持7.1以上坚屏. 2.将素材全部图片全部拉到相应的文件夹里. 3.选中Lottery--右键Show in Finder ,在Lottery文件夹下新建一个Classes,并分别分层成MVC文件夹. 4.把Classes拉到Lottery项目里,整个框架结构如 二.UI搭建 分层好之后,接下来,我们搭建一下界面.使用Storyboard进行搭建. 1.点击Main.storyboard,删除原来的界面,分别

iOS UI进阶-1.4网易彩票设置模块二

产品推荐 产品推荐使用的是UICollectionView控件,UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类. 思路: 模型:建立一个MJProduct模型,存放产品的相关信息(标题.图标) 视图:创建xib,继承于UICollectionViewCell 控制器:创建MJProductV