IOS_UI_day3_UIImageView

H:/IOS_UI/day3-01-表情排列-垃圾版-MJViewController.h
//
//  MJViewController.h
//  01-表情排列
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface MJViewController : UIViewController
- (IBAction)indexChange:(UISegmentedControl *)sender;
@end

H:/IOS_UI/day3-01-表情排列-垃圾版-MJViewController.m
//
//  MJViewController.m
//  01-表情排列
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import "MJViewController.h"

#define kImgWH 50

@interface MJViewController ()

@end

@implementation MJViewController

#pragma mark 控制器的view加载完毕就调用一次
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 1.创建表情
//    [self addImg:@"010.png" x:0 y:0];
//    UIImageView *one = [[UIImageView alloc] init];
//    one.image = [UIImage imageNamed:@"010.png"];
//    one.frame = CGRectMake(0, 0, 40, 40);
//    [self.view addSubview:one];
    
//    [self addImg:@"011.png" x:50 y:0];
//    UIImageView *two = [[UIImageView alloc] init];
//    two.image = [UIImage imageNamed:@"011.png"];
//    two.frame = CGRectMake(50, 0, 40, 40);
//    [self.view addSubview:two];
    
//    [self addImg:@"012.png" x:100 y:0];
//    UIImageView *three = [[UIImageView alloc] init];
//    three.image = [UIImage imageNamed:@"010.png"];
//    three.frame = CGRectMake(100, 0, 40, 40);
//    [self.view addSubview:three];
//    
//    [self addImg:@"013.png" x:150 y:0];
//    
//    [self addImg:@"014.png" x:200 y:0];
//    
//    [self addImg:@"015.png" x:250 y:0];
//    
//    [self addImg:@"016.png" x:0 y:50];
//    
//    [self addImg:@"017.png" x:50 y:50];
//    
//    [self addImg:@"018.png" x:100 y:50];
    
    // 1.定义列数、间距
    // 每行3列
    int columns = 2;
    // 每个表情之间的间距 = (控制器view的宽度 - 列数 * 表情的宽度) / (列数 + 1)
    CGFloat margin = (self.view.frame.size.width - columns * kImgWH) / (columns + 1);
    
    // 2.定义第一个表情的位置
    // 第一个表情的Y值
    CGFloat oneY = 100;
    // 第一个表情的x值
    CGFloat oneX = margin;
    
    // 3.创建所有的表情
    for (int i = 0; i<11; i++) {
        int no = i % 9; // no == [0, 8]
        NSString *imgName = [NSString stringWithFormat:@"01%d.png", no];
        
        // i这个位置对应的列数
        int col = i % columns;
        // i这个位置对应的行数
        int row = i / columns;
        
        // 列数(col)决定了x
        CGFloat x = oneX + col * (kImgWH + margin);
        // 行数(row)决定了y
        CGFloat y = oneY + row * (kImgWH + margin);
        
        [self addImg:imgName x:x y:y];
    }
}

#pragma mark 添加表情 icon:表情图片名
- (void)addImg:(NSString *)icon x:(CGFloat)x y:(CGFloat)y
{
    UIImageView *one = [[UIImageView alloc] init];
    one.image = [UIImage imageNamed:icon];
    one.frame = CGRectMake(x, y, kImgWH, kImgWH);
    [self.view addSubview:one];
}

#pragma mark 更改表情的列数
- (IBAction)indexChange:(UISegmentedControl *)sender {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    
//    sender.selectedSegmentIndex == 3
    // 1.定义列数、间距
    // 每行的列数
    int columns = sender.selectedSegmentIndex + 2;
    
    // 每个表情之间的间距 = (控制器view的宽度 - 列数 * 表情的宽度) / (列数 + 1)
    CGFloat margin = (self.view.frame.size.width - columns * kImgWH) / (columns + 1);
    
    // 2.定义第一个表情的位置
    // 第一个表情的Y值
    CGFloat oneY = 100;
    // 第一个表情的x值
    CGFloat oneX = margin;
    
    // 3.创建所有的表情
    for (int i = 0; i<11; i++) {
        // i这个位置对应的列数
        int col = i % columns;
        // i这个位置对应的行数
        int row = i / columns;
        
        // 列数(col)决定了x
        CGFloat x = oneX + col * (kImgWH + margin);
        // 行数(row)决定了y
        CGFloat y = oneY + row * (kImgWH + margin);
        
        // 取出i + 1位置对应的imageView,设置x、y值
        // + 1是为了跳过最前面的UISegmentControl
        UIView *child = self.view.subviews[i + 1];
        
        // 取出frame
        CGRect tempF = child.frame;
        
        // 修改x、y
//        tempF.origin.x = x;
//        tempF.origin.y = y;
        tempF.origin = CGPointMake(x, y);
        
        // 重新赋值
        child.frame = tempF;
        
//        [self addImg:imgName x:x y:y];
    }
    
    NSLog(@"子控件数量:%d", self.view.subviews.count);
    
    [UIView commitAnimations];
}
@end

H:/IOS_UI/day3-02-表情排列-优化-MJViewController.h
//
//  MJViewController.h
//  01-表情排列
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface MJViewController : UIViewController
- (IBAction)indexChange:(UISegmentedControl *)sender;

@end

H:/IOS_UI/day3-02-表情排列-优化-MJViewController.m
//
//  MJViewController.m
//  01-表情排列
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import "MJViewController.h"

/*
 1.adjust....方法去掉第2个参数----add:(BOOL)add (不能增加全局变量或者成员变量)
 2.在表情最后面增加一个“+”按钮,添加按钮在尾部添加一个表情(表情图片随机)
 */

#define kImgWH 50
#define kInitCount 13

@interface MJViewController ()

@end

@implementation MJViewController

#pragma mark 控制器的view加载完毕就调用一次
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [self adjustImagePosWithColumns:2 add:YES];
}

#pragma mark 调整图片的位置
- (void)adjustImagePosWithColumns:(int)columns add:(BOOL)add
{
    // 1.定义列数、间距
    // 每行3列
//#warning 不一样
//    int columns = 3;
    // 每个表情之间的间距 = (控制器view的宽度 - 列数 * 表情的宽度) / (列数 + 1)
    CGFloat margin = (self.view.frame.size.width - columns * kImgWH) / (columns + 1);
    
    // 2.定义第一个表情的位置
    // 第一个表情的Y值
    CGFloat oneY = 100;
    // 第一个表情的x值
    CGFloat oneX = margin;
    
    // 3.创建所有的表情
    for (int i = 0; i<kInitCount; i++) {
        // i这个位置对应的列数
        int col = i % columns;
        // i这个位置对应的行数
        int row = i / columns;
        
        // 列数(col)决定了x
        CGFloat x = oneX + col * (kImgWH + margin);
        // 行数(row)决定了y
        CGFloat y = oneY + row * (kImgWH + margin);
        
//#warning 不一样
        if (add) { // 添加新的imageView
            int no = i % 9; // no == [0, 8]
            NSString *imgName = [NSString stringWithFormat:@"01%d.png", no];
            [self addImg:imgName x:x y:y];
        } else { // 取出旧的imageview 设置x、y
            // 取出i + 1位置对应的imageView,设置x、y值
            // + 1是为了跳过最前面的UISegmentControl
            UIView *child = self.view.subviews[i + 1];
            // 取出frame
            CGRect tempF = child.frame;
            // 修改x、y
            tempF.origin = CGPointMake(x, y);
            // 重新赋值
            child.frame = tempF;
        }
    }
}

#pragma mark 添加表情 icon:表情图片名
- (void)addImg:(NSString *)icon x:(CGFloat)x y:(CGFloat)y
{
    UIImageView *one = [[UIImageView alloc] init];
    one.image = [UIImage imageNamed:icon];
    one.frame = CGRectMake(x, y, kImgWH, kImgWH);
    [self.view addSubview:one];
}

#pragma mark 更改表情的列数
- (IBAction)indexChange:(UISegmentedControl *)sender {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    
    int columns = sender.selectedSegmentIndex + 2;
    [self adjustImagePosWithColumns:columns add:NO];
    
    [UIView commitAnimations];
}
@end

H:/IOS_UI/day3-03-UIButton和UIImageView-MJViewController.h
//
//  MJViewController.h
//  02-UIButton和UIImageView
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface MJViewController : UIViewController

@end

H:/IOS_UI/day3-03-UIButton和UIImageView-MJViewController.m
//
//  MJViewController.m
//  02-UIButton和UIImageView
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import "MJViewController.h"

/*
 1.显示图片
 1> UIImageView只能一种图片(图片默认会填充整个UIImageView)  image\setImage:
 2> UIButton能显示2种图片
   * 背景 (背景会填充整个UIButton)  setBackroungImage:forState:
   * 前置(覆盖在背景上面的图片,按照之前的尺寸显示)  setImage:forState:
   * 还能显示文字
 
 2.点击事件
 1> UIImageView默认是不能响应点击事件
 2> UIButton能响应点击事件 : addTarget:action:forControlEvents:
 
 3.使用场合
 1> UIImageView : 只显示图片,不监听点击,点击了图片后不做任何反应
 2> UIButton : 既显示图片,又监听点击,点击了图片后做一些其他事情
 
 4.继承结构
 1> UIButton之所以能添加监听器来监听事件,是因为它继承自UIControl
 2> UIImagevIew之所以不能添加监听器来监听事件,是因为它直接继承自UIView
 */

@interface MJViewController ()

@end

@implementation MJViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 1.添加ImageView
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.image = [UIImage imageNamed:@"014.png"];
    imageView.frame = CGRectMake(0, 0, 150, 150);
    [self.view addSubview:imageView];
    
    // 2.UIButton
    UIButton *btn = [[UIButton alloc] init];
    // 设置背景图片
    [btn setBackgroundImage:[UIImage imageNamed:@"bg.png"] forState:UIControlStateNormal];
    // 设置前置图片
    [btn setImage:[UIImage imageNamed:@"016.png"] forState:UIControlStateNormal];
    btn.frame = CGRectMake(0, 100, 150, 150);
    
    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    
    [btn setTitle:@"我是按钮" forState:UIControlStateNormal];
    [self.view addSubview:btn];
    
//    UISlider *slider = [[UISlider alloc] init];
//    slider.frame = CGRectMake(10, 250, 200, 50);
//    slider.minimumValue = 10;
//    slider.maximumValue = 20;
//    [slider addTarget:self action:@selector(sliderChange:) forControlEvents:UIControlEventValueChanged];
//    [self.view addSubview:slider];
}

- (void)sliderChange:(UISlider *)s
{
    NSLog(@"%f", s.value);
}

- (void)btnClick:(UIButton *)mybtn
{
    NSLog(@"%@", mybtn);
}
@end

H:/IOS_UI/day3-04-Tom喵-MJViewController.h
//
//  MJViewController.h
//  03-Tom
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface MJViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *tom;
//- (IBAction)fangpi:(UIButton *)sender;
//- (IBAction)pie:(UIButton *)sender;
//- (IBAction)zhua:(UIButton *)sender;

- (IBAction)btnClick:(UIButton *)sender;


@end

H:/IOS_UI/day3-04-Tom喵-MJViewController.m
//
//  MJViewController.m
//  03-Tom
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
@interface MJViewController ()
{
    NSDictionary *_dict; // 保存所有图片的个数
}
@end
@implementation MJViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    // 1.获得tom.plist的全路径
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *path = [bundle pathForResource:@"tom" ofType:@"plist"];
    // 2.根据文件全路径加载字典
    _dict = [NSDictionary dictionaryWithContentsOfFile:path];
}
- (void)playAnim:(int)count fliename:(NSString *)filename
{
    // 1.创建可变数组
    NSMutableArray *images = [NSMutableArray array];
    // 2.添加图片
    for (int i = 0; i<count; i++) {
        // 拼成图片名
        NSString *name = [NSString stringWithFormat:@"%@_%02d.jpg", filename, i];
        // 加载图片(有缓存,不释放)
//        UIImage *img = [UIImage imageNamed:name];
        // 根据图片名,获得全路径
        NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:nil];
        // 堆空间,没有缓存,下次点击事件
        UIImage *img = [[UIImage alloc] initWithContentsOfFile:path];
        [images addObject:img];
    }
    // 3.设置动画图片(有顺序)
    _tom.animationImages = images;// 序列帧动画
    // 4.只播放一次
    _tom.animationRepeatCount = 1;
    // 5.设置动画的持续时间
    _tom.animationDuration = 0.1 * count;
    // 5.开始动画
    [_tom startAnimating];
//    // 1.有缓存(无法释放,参数传的是文件名)
//    [UIImage imageNamed:@""];
//    // 2.无缓存(用完就会释放,参数传的是全路径)
//    [[UIImage alloc] initWithContentsOfFile:];
}
#pragma mark 监听所有的按钮点击
- (IBAction)btnClick:(UIButton *)sender {
    // 1.如果ImageView类型的对象tom正在播放动画,直接返回
    if (_tom.isAnimating) return;
    // 2.取出按钮文字
    NSString *title = [sender titleForState:UIControlStateNormal];
    // 3.根据key取出字典里面的value即图片数量
    int count = [_dict[title] intValue];
    // 4.播放动画
    [self playAnim:count fliename:title];
}
@end

H:/IOS_UI/day3-04-Tom喵-tom.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>angry</key>
	<integer>26</integer>
	<key>cymbal</key>
	<integer>13</integer>
	<key>drink</key>
	<integer>81</integer>
	<key>eat</key>
	<integer>40</integer>
	<key>fart</key>
	<integer>28</integer>
	<key>foot_left</key>
	<integer>30</integer>
	<key>foot_right</key>
	<integer>30</integer>
	<key>knockout</key>
	<integer>81</integer>
	<key>pie</key>
	<integer>24</integer>
	<key>scratch</key>
	<integer>56</integer>
	<key>stomach</key>
	<integer>34</integer>
</dict>
</plist>

H:/IOS_UI/day3-05-联系人管理-MJViewController.h
//
//  MJViewController.h
//  04-联系人管理
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface MJViewController : UIViewController
// 添加
- (IBAction)add:(UIBarButtonItem *)sender;
// 删除
- (IBAction)remove:(UIBarButtonItem *)sender;


@property (weak, nonatomic) IBOutlet UIBarButtonItem *removeItem;
@end

H:/IOS_UI/day3-05-联系人管理-MJViewController.m
//
//  MJViewController.m
//  04-联系人管理
//
//  Created by apple on 13-11-24.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import "MJViewController.h"

@interface MJViewController ()

@end

@implementation MJViewController

- (IBAction)add:(UIBarButtonItem *)sender {
    // 0.取出最后一个子控件
    UIView *last = [self.view.subviews lastObject];
    // 这行的Y = 最后一个子控件的Y + 最后一个子控件的高度 + 间距
    CGFloat rowY = last.frame.origin.y + last.frame.size.height + 1;
    
    // 1.创建一行
//    UIView *rowView = [[UIView alloc] initWithFrame:CGRectMake(0, 44, 320, 50)];
    UIView *rowView = [[UIView alloc] init];
    rowView.backgroundColor = [UIColor redColor]; // 红色
    
    // 2.添加一行到控制器的view中
    [self.view addSubview:rowView];
    
    // 3.让删除item有效
    _removeItem.enabled = YES;
    
    // 4.执行动画
    rowView.frame = CGRectMake(320, rowY, 320, 50);
    rowView.alpha = 0;
    
    // 4.1.开始动画
//    [UIView beginAnimations:nil context:nil];
//    [UIView setAnimationDuration:1.0];
    
//    [UIView animateWithDuration:1.0 animations:^{
//        
//    }];
//    
    [UIView animateWithDuration:1.0 animations:^{
        rowView.frame = CGRectMake(0, rowY, 320, 50);
        rowView.alpha = 1;
    } completion:^(BOOL finished) { // 动画执行完毕后会自动调用这个block(这个代码段)
        NSLog(@"移动完毕");
    }];
    
//    [UIView commitAnimations];
}

- (IBAction)remove:(UIBarButtonItem *)sender {
    // 1.取出最后一个子控件
    UIView *last = [self.view.subviews lastObject];
//    Class c = [UIToolbar class];
//    // 是toolbar
//    if ([last isKindOfClass:c]) return;
    
    // 2.移除子控件
//    [last removeFromSuperview];
    
    [UIView animateWithDuration:1.0 animations:^{
        CGRect tempF = last.frame;
        tempF.origin.x = 320;
        last.frame = tempF;
        
        last.alpha = 0;
    } completion:^(BOOL finished) {
        [last removeFromSuperview];
        
        // 剩下的子控件个数 > 1就能够点击“删除”
        _removeItem.enabled = self.view.subviews.count > 1;
    }];
    
    // 3.判断剩下的子控件个数
//    if (self.view.subviews.count == 1)
//    {
//        _removeItem.enabled = NO;
//    }
}
@end

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值