仿网易彩票代码实现
1.设置全部导航条的背景
//
取出全部导航条
UINavigationBar
*bar = [UINavigationBar
appearance];
//
设置全部导航条的背景图片
[bar setBackgroundImage:[UIImage imageName:
@"navigationbar_background.png"] forBarMetrics:UIBarMetricsDefault];
//
导航栏上有1层BackgroundImageView,不能直接设置背景色彩,设置背景色彩是无效的
// bar.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"navigationbar_background.png"]];
//
设置所有导航条字体的色彩
NSDictionary
*dict =
@{NSFontAttributeName: [UIFont
systemFontOfSize:15.0],NSForegroundColorAttributeName:[UIColor
whiteColor]};
[bar setTitleTextAttributes:dict];
//
设置主题色彩
[bar setTintColor:[UIColor
whiteColor]];
2、解决IOS6和IOS7兼容性问题
程序启动的时候,隐藏状态栏,ios6需要恢复状态栏显示
设置状态栏色彩 ios7默许状态栏交给控制器管理,修改info.plist文件,让状态栏交给application管理
application.statusBarHidden
=
NO;
application.statusBarStyle
=
UIStatusBarStyleLightContent;
3、自定义button,设置button的标题和图片的位置
//
设置按钮标题的位置
- (CGRect)titleRectForContentRect:(CGRect)contentRect;
//
设置按钮图片的位置
- (CGRect)imageRectForContentRect:(CGRect)contentRect;
// 获得当前文字尺寸,计算内部Label的尺寸
NSDictionary
*dict =
@{NSFontAttributeName: [UIFont
systemFontOfSize:15.0]};
titleW =
[self.currentTitle
boundingRectWithSize:CGSizeMake(MAXFLOAT,
MAXFLOAT)
options:NSStringDrawingTruncatesLastVisibleLine
attributes:dict
context:nil].size.width;
注意:IOS6和IOS7有兼容性问题
boundingRectWithSize在ios7才有,ios6没有这个方法。
IOS6需要用这个方法,获得当前文字的尺寸,计算内部Label的尺寸。
titleW = [self.currentTitle
sizeWithFont:[UIFont
systemFontOfSize:15.0]].width;
4、button 和image在stroyboard的拉伸
注意:
通过storyboard只能拉伸UIImageView,而button在storyboard不能拉伸,只能用代码实现。
storyboard中 x:表示左侧多少不拉伸 y:表示上边多少不拉伸 w:表示宽度拉伸多少个像素 h:表示高度拉伸多少个像素 x:0.5(左侧1半不拉伸)
y:0.5(顶部1半不拉伸)
w:0 (宽度拉伸1个像素)
h:0(高度拉伸1个像素)。
//
拉伸按钮
UIImage
*image = [UIImage
imageNamed:@"NavButton"];
UIImage
*imageH = [UIImage
imageNamed:@"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];
[_loginBtn
setBackgroundImage:image
forState:UIControlStateNormal];
[_loginBtn
setBackgroundImage:imageH
forState:UIControlStateHighlighted];
5、UICollectionViewController
UICollectionViewController默许有1个UICollectionView,但是self.collectionView
!= self.view
UITableViewController默许有1个UITableView,并且self.tableview
== self.view
UICollectionViewCell是不能通过代码来创建的,forIndexPath意味着去stroyboard中创建。
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:ID
forIndexPath:indexPath];
UICollectionViewCell
*cell = [[UICollectionViewCell alloc] init];
UICollectionViewCell首先会从缓存池中根据Identifier查找,如果缓存池中没有,才会手动创建,但是手动创建init方法没有提供标识符的构造方法,在做系统优化的时候,就不能根据Identifier准确的查找出,会引发表格的重用。
// 1.注册cell(告知collectionView将来创建怎样的cell),利用xib创建
UINib
*nib = [UINib
nibWithNibName:@"SUNProductCell"
bundle:nil];
[self.collectionView
registerNib:nib
forCellWithReuseIdentifier:ID];
// 2.注册UICollectionViewCell ,如果缓存池中没有,就会自动创建
[self.collectionView
registerClass:[UICollectionViewCell
class]
forCellWithReuseIdentifier:ID];
注意:在使用UICollectionViewCell 必须传入布局。
// 1.流水布局
UICollectionViewFlowLayout
*layout = [[UICollectionViewFlowLayout
alloc]
init];
// 2.每一个cell的frame
layout.itemSize
=
CGSizeMake(80,
80);
// 3.设置cell之间的水平间距
layout.minimumInteritemSpacing
=
0;
// 4.设置cell之间的垂直间距
layout.minimumLineSpacing
=
10;
// 5.设置4周的内边距
layout.sectionInset
=
UIEdgeInsetsMake(layout.minimumLineSpacing,
0,
0,
0);
return [super
initWithCollectionViewLayout:layout];
使用UICollectionView
第1步:必须有布局
第2部:cell必须自己注册
6、解析JSON数据
NSString
*fileName = [[NSBundle
mainBundle]
pathForResource:@"products.json"
ofType:nil];
NSData
*data = [NSData
dataWithContentsOfFile:fileName];
NSArray
*jsonArr = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:nil];
7、UIWebView
// 加载资源包中的html
NSURL
*url = [[NSBundle
mainBundle]
URLForResource:_helpItem.html
withExtension:nil];
NSURLRequest
*request = [NSURLRequest
requestWithURL:url];
[webView
loadRequest:request];
//
加载完网页调用
- (void)webViewDidFinishLoad:(UIWebView
*)webView
{
NSString *str = [NSString
stringWithFormat:@"window.location.href
= '#%@';",_helpItem.ID];
[webView
stringByEvaluatingJavaScriptFromString:str];
}