综合设计ui 彩票设计json 和 html添加

json的格式和plist文件差不多  所以思路也是差不多  首先创建模型



#import <Foundation/Foundation.h>

@interface MJHtml : NSObject
/**
 *  网页标题
 */
@property (nonatomic, copy) NSString *title;
/**
 *  网页文件名
 */
@property (nonatomic, copy) NSString *html;

@property (nonatomic, copy) NSString *ID;

- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)htmlWithDict:(NSDictionary *)dict;
@end


#import "MJHtml.h"

@implementation MJHtml
- (instancetype)initWithDict:(NSDictionary *)dict
{
    if (self = [super init]) {
        self.html = dict[@"html"];
        self.title = dict[@"title"];
        self.ID = dict[@"id"];
    }
    return self;
}

+ (instancetype)htmlWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}
@end

然后创建一个MJHelpViewController  继承base

#import "MJHelpViewController.h"
#import "MJSettingArrowItem.h"
#import "MJSettingGroup.h"
#import "MJHtmlViewController.h"
#import "MJNavigationController.h"
#import "MJHtml.h"

@interface MJHelpViewController ()
@property (nonatomic, strong) NSArray *htmls;
@end

@implementation MJHelpViewController

- (NSArray *)htmls
{
    if (_htmls == nil) {
        
        // JSON文件的路径
        NSString *path = [[NSBundle mainBundle] pathForResource:@"help.json" ofType:nil];
        
        // 加载JSON文件
        NSData *data = [NSData dataWithContentsOfFile:path];
        
        // 将JSON数据转为NSArray或者NSDictionary
        NSArray *dictArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        
        // 将字典转成模型
        NSMutableArray *htmlArray = [NSMutableArray array];
        for (NSDictionary *dict in dictArray) {
            MJHtml *html = [MJHtml htmlWithDict:dict];
            [htmlArray addObject:html];
        }
        
        _htmls = htmlArray;
    }
    return _htmls;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 1.创建所有的item
    NSMutableArray *items = [NSMutableArray array];
    for (MJHtml *html in self.htmls) {
        MJSettingItem *item = [MJSettingArrowItem itemWithTitle:html.title destVcClass:nil];
        [items addObject:item];
    }
    
    // 2.创建组
    MJSettingGroup *group = [[MJSettingGroup alloc] init];
    group.items = items;
    [self.data addObject:group];
}

这样json就写到了界面里面    然后点击要弹出下一个网页   网页显示的界面是UIWebView   在loadview中设置他的view为uiwebview

loadview

自定义VIEW  如果想把控制器的view换成其他view

然后设置网页的标题就是html 的标题    设置代理可以在OC中用javascript语句   拼接后使用
#import <UIKit/UIKit.h>
@class MJHtml;
@interface MJHtmlViewController : UIViewController
@property (nonatomic, strong) MJHtml *html;
@end

//
//  MJHtmlViewController.m
//  00-ItcastLottery
//
//  Created by apple on 14-4-17.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "MJHtmlViewController.h"
#import "MJHtml.h"

@interface MJHtmlViewController () <UIWebViewDelegate>

@end

@implementation MJHtmlViewController

- (void)loadView
{
    self.view = [[UIWebView alloc] init];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 设置标题
    self.title = self.html.title;
    
    UIWebView *webView = (UIWebView *)self.view;
    webView.delegate = self;
    
    // 创建URL
    NSURL *url = [[NSBundle mainBundle] URLForResource:self.html.html withExtension:nil];
    
    // 创建请求
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    // 发送请求加载网页
    [webView loadRequest:request];
    
    // 设置左上角的关闭按钮
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"关闭" style:UIBarButtonItemStylePlain target:self action:@selector(close)];
}

- (void)close
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

/**
 *  网页加载完毕的时候调用
 */
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    // 跳到id对应的网页标签
    
    // 1.拼接Javacript代码
    NSString *js = [NSString stringWithFormat:@"window.location.href = '#%@';", self.html.ID];
    // 2.执行JavaScript代码
    [webView stringByEvaluatingJavaScriptFromString:js];
}
@end


然后在help中  将下一个网页设置为navigation的根控制器  跳转

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MJHtmlViewController *htmlVc = [[MJHtmlViewController alloc] init];
    htmlVc.html = self.htmls[indexPath.row];
    MJNavigationController *nav = [[MJNavigationController alloc] initWithRootViewController:htmlVc];
    [self presentViewController:nav animated:YES completion:nil];
}
@end


然后是


同样的先创建模型

#import <Foundation/Foundation.h>

@interface MJProduct : NSObject
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *icon;
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)productWithDict:(NSDictionary *)dict;
@end

#import "MJProduct.h"

@implementation MJProduct
- (instancetype)initWithDict:(NSDictionary *)dict
{
    if (self = [super init]) {
        self.icon = dict[@"icon"];
        self.title = dict[@"title"];
//        [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}

+ (instancetype)productWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}
@end

因为要 放到tableviewcell中所以要重写set方法  
#import <UIKit/UIKit.h>
@class MJProduct;

@interface MJProductCell : UICollectionViewCell
@property (nonatomic, strong) MJProduct *product;
@end

#import "MJProductCell.h"
#import "MJProduct.h"

@interface MJProductCell()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;

@end

@implementation MJProductCell

- (void)awakeFromNib
{
    self.iconView.layer.cornerRadius = 8;   //圆角
    self.iconView.clipsToBounds = YES;      //超出圆角的剪掉
}

- (void)setProduct:(MJProduct *)product
{
    _product = product;
    
    // 1.设置头像
    self.iconView.image = [UIImage imageNamed:product.icon];
    
    // 2.设置名称
    self.nameLabel.text = product.title;
}

@end

这次是继承自UICollectionViewController  九宫格   

注意这要有个UICollectionViewFlowLayout        还要先注册nib   2中方式一种从nib注册一种代码注册

必须用一个非nil的layout参数来初始化UICollectionView

/**
 UICollectionView must be initialized with a non-nil layout parameter
 
 必须用一个非nil的layout参数来初始化UICollectionView
 */

#define MJProductCellID @"product"

#import "MJProductViewController.h"
#import "MJProduct.h"
#import "MJProductCell.h"

@interface MJProductViewController ()
@property (nonatomic, strong) NSArray *products;
@end

@implementation MJProductViewController

- (NSArray *)products
{
    if (_products == nil) {
        
        // JSON文件的路径
        NSString *path = [[NSBundle mainBundle] pathForResource:@"products.json" ofType:nil];
        
        // 加载JSON文件
        NSData *data = [NSData dataWithContentsOfFile:path];
        
        // 将JSON数据转为NSArray或者NSDictionary
        NSArray *dictArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        
        // 将字典转成模型
        NSMutableArray *productArray = [NSMutableArray array];
        for (NSDictionary *dict in dictArray) {
            MJProduct *p = [MJProduct productWithDict:dict];
            [productArray addObject:p];
        }
        
        _products = productArray;
    }
    return _products;
}

- (id)init
{
    // 1.流水布局
    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    // 2.每个cell的尺寸
    layout.itemSize = CGSizeMake(80, 80);
    // 3.设置cell之间的水平间距
    layout.minimumInteritemSpacing = 0;
    // 4.设置cell之间的垂直间距
    layout.minimumLineSpacing = 10;
    // 5.设置四周的内边距
    layout.sectionInset = UIEdgeInsetsMake(layout.minimumLineSpacing, 0, 0, 0);   //默认为10
    return [super initWithCollectionViewLayout:layout];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 1.注册cell(告诉collectionView将来创建怎样的cell)
    UINib *nib = [UINib nibWithNibName:@"MJProductCell" bundle:nil];
    [self.collectionView registerNib:nib forCellWithReuseIdentifier:MJProductCellID];
    
//    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:MJProductCellID];
    
    // 2.设置collectionView的背景色
    self.collectionView.backgroundColor = [UIColor whiteColor];
}

#pragma mark - 数据源方法
//- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
//{
//    return 1;
//}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return self.products.count;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.获得cell
    MJProductCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:MJProductCellID forIndexPath:indexPath];
    
    // 2.传递模型
    cell.product = self.products[indexPath.item];
    
    return cell;
}

#pragma mark - 代理方法
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    MJProduct *p = self.products[indexPath.item];
    NSLog(@"点击了---%@", p.title);
}

@end




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值