仿网易彩票代码实现
一.设置全部导航条的背景
//
取出全部导航条
UINavigationBar
*bar = [
UINavigationBar
appearance
];
//
设置全部导航条的背景图片
[bar setBackgroundImage:[UIImage imageName:
@"navigationbar_background.png"
] forBarMetrics:UIBarMetricsDefault];
//
导航栏上有一层
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
]];
二、解决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
: [
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
;
四、
button
和
image
在
stroyboard
的拉伸
注意:
通过
storyboard
只能拉伸
UIImageView
,而
button
在
storyboard
不能拉伸,只能用代码实现。
storyboard
中
x:
表示左边多少不拉伸
y:
表示上边多少不拉伸
w:
表示宽度拉伸多少个像素
h:
表示高度拉伸多少个像素
x:
0.5
(
左边一半不拉伸
) y:
0.5
(
顶部一半不拉伸
) w:
0
(
宽度拉伸一个像素
) h:
0
(
高度拉伸一个像素
)。
//
拉伸按钮
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
];
五、
UICollectionViewController
UICollectionViewController默认有一个
UICollectionView,但是
self
.collectionView !=
self
.view
UITableViewController
默认有一个
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.
设置四周的内边距
layout.
sectionInset
=
UIEdgeInsetsMake
(layout.
minimumLineSpacing
,
0
,
0
,
0
);
return
[
super
initWithCollectionViewLayout
:layout];
使用
UICollectionView
第一步:必须有布局
第二部:
cell
必须自己注册
六、解析
JSON数据
NSString
*fileName = [[
NSBundle
mainBundle
]
pathForResource
:
@"products.json"
ofType
:
nil
];
NSData
*data = [
NSData
dataWithContentsOfFile
:fileName];
NSArray
*jsonArr = [
NSJSONSerialization
JSONObjectWithData
:data
options
:
NSJSONReadingMutableContainers
error
:
nil
];
七、
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];
}