IOS 简易图片浏览器


本节重点:


了解uibutton label  imagView 的常用属性

了解加载plist 的过程

了解 NSArray 读取文件的方法

了解为什么使用懒加载


使用pilst 能让程序代码之间减少耦合性,跟代码的复用

NSBundle   // 一个目录类

[NSbunlde mainBundle]  //表示当前程序的目录


效果图片 :

效果


代码示例 :


//
//  SJViewController.m
//  04.ImageDemo
//
//  Created by SJ.abnormal on 15-1-30.
//  Copyright (c) 2015年 SJ.abnormal. All rights reserved.
//

#import "SJViewController.h"

typedef enum  {
    TAGZero,
    TAGOne,
    TAGtwo,
    TAGThree,
    TAGFour,
    TAGFive,
    TAGSix,
    TAGSeven
} TAG;

@interface SJViewController ()

@property(weak,nonatomic) UILabel *noLabel;     //序号文本
@property(weak,nonatomic) UILabel *infoLabel;   //信息文本
@property(weak,nonatomic) UIButton *leftBtn;    //向左按钮
@property(weak,nonatomic) UIButton *rightBtn;   //向右按钮
@property(weak,nonatomic) UIImageView *imageHead;    //显示的图像

@property (assign,nonatomic) NSUInteger index; //设置图片索引
@property (copy, nonatomic) NSArray *dataImage; //图片资源
@end

@implementation SJViewController

#pragma mark - 即将初始化代码
- (void)viewDidLoad
{
    [super viewDidLoad];
	[self change];
}

#pragma mark - buttonClick button点击事件
- (void) buttonClick: (UIButton *) btn {
    
    int index = btn.tag; //记录btag值
    
    if (index == TAGtwo) {
        self.index--;
        [self change];
    }else {
        self.index++;
        [self change];
    }
}

#pragma mark - noLabel 序号懒加载
- (UILabel *)noLabel {
    
    if (!_noLabel) {
        _noLabel = [self labelWithFrame:CGRectMake(110, 30, 100, 30) andTag:TAGOne addTitle:@"你妹"];
        [self.view addSubview:_noLabel];
    }
    return _noLabel;
}
#pragma mark - change 更改图片 文本 序号等信息
- (void) change {
    int count = self.dataImage.count;   //获取图像资源数组的长度
    int index = self.index; //获取索引值
    NSDictionary *data = self.dataImage[index]; //取出对应的字典
    self.noLabel.text = [NSString stringWithFormat:@"%d/%d",index+1,count];
    self.infoLabel.text = data[@"desc"];    //取出字典的desc元素
    self.imageHead.image = [UIImage imageNamed:data[@"icon"]]; //取出字典的icon元素
    self.leftBtn.enabled = index > TAGZero;
    self.rightBtn.enabled = self.index < count-1;
}

#pragma mark - infoLabel 文本信息懒加载
- (UILabel *)infoLabel{
    
    if (!_infoLabel) {
        _infoLabel = [self labelWithFrame:CGRectMake(85, 240, 150, 30) andTag:TAGFive addTitle:nil];
        [self.view addSubview:_infoLabel];
    }
    return _infoLabel;
}

#pragma mark - leftBtn 向左按钮懒加载
- (UIButton *)leftBtn {
    
    if (!_leftBtn) {
        _leftBtn = [self buttonWithFrame:CGRectMake(20, 150, 35, 35) andTag:TAGtwo addNormalImage:@"left_normal" addhighlightedImage:@"left_highlighted"];
        _leftBtn.enabled = NO;  //禁止按钮被点击
        [self.view addSubview:_leftBtn];
    }
    return _leftBtn;
}

#pragma mark - rightBtn 向右按钮懒加载
- (UIButton *)rightBtn {
    
    if (!_rightBtn) {
        _rightBtn = [self buttonWithFrame:CGRectMake(265, 150, 35, 35) andTag:TAGFour addNormalImage:@"right_normal" addhighlightedImage:@"right_highlighted"];
        [self.view addSubview:_rightBtn];
    }
    return _rightBtn;
}

#pragma mark - imageHead imageHead懒加载
- (UIImageView *)imageHead {
    
    if (!_imageHead) {
        _imageHead = [self imageViewWithFrame:CGRectMake(85, 80, 150, 150) andTag:TAGThree addNormalImage:nil];
        [self.view addSubview:_imageHead];
    }
    return _imageHead;
}

#pragma mark - labelWithFrame label工厂模块
- (UILabel *) labelWithFrame:(CGRect) frame andTag:(NSUInteger)index  addTitle: (NSString *)title {
    
    UILabel *label = [[UILabel alloc]initWithFrame:frame]; //创建label 并设置坐标大小
    label.text = title; //设置label标题
    label.tag = index;  //设置tag值
    label.textAlignment = NSTextAlignmentCenter;    //设置label标题居中
    return label;   //返回label对象
}

#pragma mark - buttonWithFrame button工厂模块
- (UIButton *) buttonWithFrame:(CGRect) frame andTag:(NSUInteger)index  addNormalImage: (NSString *)normal  addhighlightedImage: (NSString *)highlighted{
    
    UIButton *btn = [[UIButton alloc]initWithFrame:frame]; //创建btn 并设置坐标大小
    btn.tag = index;;   //设置tag值
    [btn setBackgroundImage:[UIImage imageNamed:normal] forState:UIControlStateNormal]; //设置默认状态的图片
    [btn setBackgroundImage:[UIImage imageNamed:highlighted] forState:UIControlStateHighlighted];//设置高亮状态的图片
    [btn addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];   //添加触发事件
    return btn;   //返回btn对象
}

#pragma mark - labelWithFrame label工厂模块
- (UIImageView *)imageViewWithFrame:(CGRect) frame andTag:(NSUInteger)index  addNormalImage: (NSString *)normal {
    
    UIImageView *imagevView = [[UIImageView alloc]initWithFrame:frame]; //创建iimageView 并设置坐标大小
    imagevView.tag = index; //设置tag值
    imagevView.image = [UIImage imageNamed:normal]; //设置imageHead显示的图片
    return imagevView;   //返回label对象
}

- (NSArray *)dataImage {
    
    if (!_dataImage) {
        //获取plist数据的文件路径
        NSString *path = [[NSBundle mainBundle] pathForResource:@"imageData" ofType:@"plist"];
        //将数据读取存入数组
        _dataImage = [NSArray arrayWithContentsOfFile:path];
    }
    return _dataImage;
}
@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值