仿网易彩票代码实现

仿网易彩票代码实现

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

// 取出全部导航条
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];
}

你可能感兴趣的:(iOS-UI设计)