易佰

ViewController.m

//
//  ViewController.m
//  Yibai
//
//  Created by chenshunyi on 2017/12/14.
//  Copyright © 2017年 house365. All rights reserved.
//

#import "ViewController.h"
#import "CSButton.h"
@interface ViewController (){    
    CGSize _size ;
    NSMutableArray *_bigArr;
}
@end
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    _size = [UIScreen mainScreen].bounds.size;
    UIImageView *backImgVew  = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.jpg"]];
    backImgVew.frame =CGRectMake(0, 0, _size.width, _size.height);
    [self.view addSubview:backImgVew];

    //创建大图
    [self creatBigPicture];
    //创建小图
    [self creatSmallPicture];    
}
//创建上部大图片
-(void)creatBigPicture{
    _bigArr = [NSMutableArray array];
    NSMutableArray *numArr = [NSMutableArray array];    
    //创建一个包含0~9  10个数字的数组
    for (int j = 0; j<10; j++) {
        //把int类型的数字i 转化成字符串类型(数组里面只能放对象)
        NSString *numStr = [NSString stringWithFormat:@"%d",j];
        [numArr addObject:numStr];
    }   
    CGFloat leftValue = 25;
    CGFloat width_height = 55;
    //间隔
    CGFloat interval = (_size.width-leftValue*2-width_height*4)/3;        
    for (int i = 0; i< 4; i++) {
        CSButton *button = [CSButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(leftValue+i*(width_height+interval), 80, width_height, width_height);
        //随机生成一个数字
         NSInteger num = arc4random()%numArr.count;
        //从数组中找到下表为num的对象(数字)
        NSString *numStr1 = [numArr objectAtIndex:num];
        //把这次取出来的数从数组中移除  以防下次还会取到相同的数字
        [numArr removeObject:numStr1];
        button.isUsed = NO;
        //根据从数组中找到的数字 拼接成图片名  (用来找内存中的图片)
        [button setImage:[UIImage imageNamed:[NSString stringWithFormat:@"b_%@.png",numStr1]] forState:UIControlStateNormal];
        [self.view addSubview:button];
        [_bigArr addObject:button];

    }
}
//创建小图片
-(void)creatSmallPicture{
    CGFloat leftValue = 25;
    CGFloat width_height = 45;
    CGFloat interval = (_size.width-2*leftValue-5*width_height)/4;

    for (int i = 0; i<10; i++) {
        CSButton *button = [CSButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(leftValue+(i%5)*(width_height+interval), 280+(i/5)*(width_height+interval), width_height, width_height);
        [button setImage:[UIImage imageNamed:[NSString stringWithFormat:@"s_%d.png",i]] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(smallButtonAction:) forControlEvents:UIControlEventTouchUpInside];
        button.isTop = NO;//表示都在下边
        button.originCenter = button.center;//把当前的中心坐标记录到button的属性中
        [self.view addSubview:button];
    }
}
-(void)smallButtonAction:(CSButton *)sender{
    if (sender.isTop == YES) {//按钮在上部
        CGPoint point = sender.originCenter;
        sender.center = point;
        sender.isTop = NO;

    }else{//按钮在下部

        for (int i = 0; i<_bigArr.count; i++) {
            CSButton *button = [_bigArr objectAtIndex:i];
            if (!button.isUsed) {//如果大数组中的button没有被占用
                button.isUsed = YES;
                CGPoint point = button.center;
                sender.center = point;
                sender.isTop = YES;//坐标变为上面大图片的坐标  (移到了上面  所以isTop属性改为YES)
                break;//跳出循环
            }
        }
    }
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end

CSButton.h


//
//  CSButton.h
//  Yibai
//
//  Created by chenshunyi on 2017/12/14.
//  Copyright © 2017年 house365. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface CSButton : UIButton

//小按钮用的属性
@property (nonatomic,assign) CGPoint originCenter;//原中心坐标
@property (nonatomic,assign) BOOL isTop;//是否在上边



//给大按钮用的属性

@property (nonatomic,assign) BOOL isUsed;//是否被占用



@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值