首页 > 代码库 > 仿网易彩票代码实现

仿网易彩票代码实现

仿网易彩票代码实现

一.设置全部导航条的背景

//取出全部导航条
UINavigationBar*bar = [UINavigationBarappearance];
//设置全部导航条的背景图片
[bar setBackgroundImage:[UIImage imageName:
@"navigationbar_background.png"] forBarMetrics:UIBarMetricsDefault];
//导航栏上有一层BackgroundImageView,不能直接设置背景颜色,设置背景颜色是无效的
//  bar.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"navigationbar_background.png"]];

//设置所有导航条字体的颜色
NSDictionary*dict = @{NSFontAttributeName: [UIFontsystemFontOfSize:15.0],NSForegroundColorAttributeName:[UIColorwhiteColor]};
 [
bar setTitleTextAttributes:dict];
//设置主题颜色
[
bar setTintColor:[UIColorwhiteColor]];
二、解决IOS6和IOS7兼容性问题
程序启动的时候,隐藏状态栏,ios6需要恢复状态栏显示
设置状态栏颜色 ios7默认状态栏交给控制器管理,修改info.plist文件,让状态栏交给application管理
application.statusBarHidden= NO;
application.
statusBarStyle= UIStatusBarStyleLightContent;
三、自定义button,设置button的标题和图片的位置
//设置按钮标题的位置
- (
CGRect)titleRectForContentRect:(CGRect)contentRect;
//设置按钮图片的位置
- (CGRect)
imageRectForContentRect:(CGRect)contentRect;
// 获取当前文字尺寸计算内部Label的尺寸
NSDictionary*dict = @{NSFontAttributeName: [UIFontsystemFontOfSize:15.0]};
titleW = [self.currentTitleboundingRectWithSize:CGSizeMake(MAXFLOAT,MAXFLOAT)options:NSStringDrawingTruncatesLastVisibleLineattributes:dictcontext:nil].size.width;
注意:IOS6和IOS7有兼容性问题
boundingRectWithSizeios7才有,ios6没有这个方法。
IOS6需要用这个方法,获取当前文字的尺寸,计算内部Label的尺寸。
titleW = [self.currentTitlesizeWithFont:[UIFontsystemFontOfSize:15.0]].width;
四、button imagestroyboard的拉伸
注意:
通过storyboard只能拉伸UIImageView,而buttonstoryboard不能拉伸,只能用代码实现。  
 storyboard x:表示左边多少不拉伸 y:表示上边多少不拉伸 w:表示宽度拉伸多少个像素 h:表示高度拉伸多少个像素 x:0.5(左边一半不拉伸) y:0.5(顶部一半不拉伸) w:0 (宽度拉伸一个像素) h:0(高度拉伸一个像素)。
  
//拉伸按钮
UIImage*image = [UIImageimageNamed:@"NavButton"];
UIImage*imageH = [UIImageimageNamed:@"NavButtonPressed"];
image = [image
stretchableImageWithLeftCapWidth:image.size.width* 0.5  topCapHeight:image.size.height* 0.5];
imageH = [imageH
stretchableImageWithLeftCapWidth:imageH.size.width* 0.5 topCapHeight:imageH.size.height* 0.5];
[
_loginBtnsetBackgroundImage:imageforState:UIControlStateNormal];
[
_loginBtnsetBackgroundImage:imageHforState:UIControlStateHighlighted];
五、UICollectionViewController
UICollectionViewController默认有一个UICollectionView,但是self.collectionView != self.view
UITableViewController默认有一个UITableView,并且self.tableview == self.view

UICollectionViewCell是不能通过代码来创建的,forIndexPath意味着去stroyboard中创建。
UICollectionViewCell *cell = [collectionViewdequeueReusableCellWithReuseIdentifier:IDforIndexPath:indexPath];
UICollectionViewCell*cell = [[UICollectionViewCell alloc] init];
UICollectionViewCell首先会从缓存池中根据Identifier查找,如果缓存池中没有,才会手动创建,但是手动创建init方法没有提供标识符的构造方法,在做系统优化的时候,就不能根据Identifier准确的查找出,会引起表格的重用。

// 1.注册cell(告诉collectionView将来创建怎样的cell),利用xib创建
UINib*nib = [UINibnibWithNibName:@"SUNProductCell"bundle:nil];
[
self.collectionViewregisterNib:nibforCellWithReuseIdentifier:ID];

// 2.注册UICollectionViewCell ,如果缓存池中没有,就会自动创建
[self.collectionViewregisterClass:[UICollectionViewCellclass]forCellWithReuseIdentifier:ID];

注意:在使用UICollectionViewCell 必须传入布局。
    // 1.流水布局
   
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayoutalloc]init];
   
// 2.每个cellframe
    layout.
itemSize= CGSizeMake(80,80);
   
// 3.设置cell之间的水平间距
    layout.
minimumInteritemSpacing= 0;
   
// 4.设置cell之间的垂直间距
    layout.
minimumLineSpacing= 10;
   
// 5.设置四周的内边距
    layout.
sectionInset= UIEdgeInsetsMake(layout.minimumLineSpacing,0,0,0);
   
return [superinitWithCollectionViewLayout:layout];

使用UICollectionView 
   第一步:必须有布局
   
第二部:cell必须自己注册
六、解析JSON数据
NSString*fileName = [[NSBundlemainBundle]pathForResource:@"products.json"ofType:nil];
NSData*data =http://www.mamicode.com/ [NSDatadataWithContentsOfFile:fileName];
NSArray*jsonArr =  [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];
七、UIWebView
// 加载资源包中的html
NSURL*url = [[NSBundlemainBundle]URLForResource:_helpItem.htmlwithExtension:nil];
NSURLRequest*request = [NSURLRequestrequestWithURL:url];
[webView
loadRequest:request];
//加载完网页调用
- (
void)webViewDidFinishLoad:(UIWebView*)webView
{
   
NSString *str = [NSStringstringWithFormat:@"window.location.href = http://www.mamicode.com/‘#%@‘;",_helpItem.ID];
    [webView
stringByEvaluatingJavaScriptFromString:str];
}

仿网易彩票代码实现