黑马程序员---03-第三个UI程序

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 


//  C_DZViewController.h
//  03-第三个UI程序(改写图片旋转)
//
//  Created by DavidAppleMac on 14-8-14.
//  Copyright (c) 2014年 DavidCompany. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface C_DZViewController :UIViewController

// 1. 把图片设置为成员对象变量,通过按钮来改变图片button得属性
@property (weak, nonatomic) IBOutletUIButton *btn;
// 2. 图片复原
- (IBAction)changeButtonPicture:(id)sender;
// 3. 图片上下,左右移动
- (IBAction)runPicture:(id)sender;
// 4. 图片左右旋转
- (IBAction)leftRightPicture:(id)sender;
// 5. 图片放大,缩小
- (IBAction)smallBigPIcture:(id)sender;
@end
//
//  C_DZViewController.m
//  03-第三个UI程序(改写图片旋转)
//
//  Created by DavidAppleMac on 14-8-14.
//  Copyright (c) 2014年 DavidCompany. All rights reserved.
//

/*
注意:主要知识点在于
1》代码重构,对重复代码的反复提炼(特别是使用block,来简化代码)
2》对frame center 的使用
*/



#import "C_DZViewController.h"

// 通过宏定义或者const来定义程序中的常量
#define kmoveDistance 50
constCGFloat biggerValue = 1.3 ;
constCGFloat smallerValue = 0.6 ;

@interface C_DZViewController ()

@end

@implementation C_DZViewController
// 1. 通过block来进行代码重构,(特别是代码块中前后部分相同得部分得时候)
- (void)clickButton:(void (^)())myBlock
{
    [UIViewbeginAnimations:nilcontext:nil] ;
    [UIViewsetAnimationDuration:2] ;
    myBlock() ;
    [UIViewcommitAnimations] ;
    
}
// 2. 加载view空间,在程序一启动后进行
- (void)viewDidLoad
{
    [superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
// 3. 释放可以被回收得资源,控制内存
- (void)didReceiveMemoryWarning
{
    [superdidReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark 图片复位
- (IBAction)changeButtonPicture:(id)sender {
    [selfclickButton:^{
// 4. CGAffineTransformIdentity为一个常量值,仅
    self.btn.transform =CGAffineTransformIdentity ;
    }] ;
}

#pragma mark 图片前后,左右移动
- (IBAction)runPicture:(id)sender
{
    [selfclickButton:^{
        
// 5.1 用frame方法来移动图片,(注意:frame是一个结构体,成员变量不能直接来访问结构体得成员,只能通过赋值给一个中间变量得frame类型得结构体,来间接修改图片成员变量得frame得属性)
//  CGRect tempFram = self.btn.frame ;
        
// 5.2 通过修改center的方法来移动图片,同样不可以直接修改center结构体的成员的值,(此外不能用bound来移动图片,因为bound的原点就是图像本身的左上定点,也就是说永远是0.0点,只能用它来修改宽高)
   CGPoint tempCenter = self.btn.center ;
        
// 5.3 通过sender来接受按钮的tag,从而通过swish来判断做出什么行动
   int tag = [sender tag] ;
   switch (tag)
    {
       case 1:
//            tempFram.origin.y -= kmoveDistance ;
            tempCenter.y -=kmoveDistance ;
           break;
       case 2:
//            tempFram.origin.y += kmoveDistance ;
            tempCenter.y +=kmoveDistance ;
           break;
       case 3:
//            tempFram.origin.x -= kmoveDistance ;
            tempCenter.x -=kmoveDistance ;
           break;
       case 4:
//            tempFram.origin.x += kmoveDistance ;
            tempCenter.x +=kmoveDistance ;
           break;
            
       default:
           break;
    }

// 5.4 把修好好frame或者center的属性,重新赋值给成员变量btn
//    self.btn.frame = tempFram ;
       self.btn.center = tempCenter;
    } ] ;
}

#pragma mark 图片左右旋转
- (IBAction)leftRightPicture:(id)sender {
    [selfclickButton:^{
   int tag = [sender tag] ;
//    switch (tempTag) {
//        case 5:
//            self.btn.transform = CGAffineTransformRotate(_btn.transform, -M_PI_4) ;
//            break;
//        case 6:
//            self.btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4) ;
//            break;
//            
//        default:
//            break;
//    }
    
// 6. 代码重构,注意这种重构的方式
   self.btn.transform =CGAffineTransformRotate(self.btn.transform,M_PI_4* (tag == 5 ? -1:1)) ;
    }];
}

#pragma mark  图片放大或缩小
- (IBAction)smallBigPIcture:(id)sender {
    [selfclickButton:^(){
   int tag = [sender tag] ;
//    switch (tag) {
//        case 7:
//            self.btn.transform = CGAffineTransformScale(_btn.transform, 1.3, 1.3) ;
//            break;
//        case 8:
//            //self.btn.transform = CGAffineTransformTranslate(self.btn.transform, 0.8, 0.8) ;
//            self.btn.transform = CGAffineTransformScale(_btn.transform, 0.6, 0.6) ;
//            break;
//            
//        default:
//            break;
//    }
        
// 7. 代码重构
   CGFloat setValue = tag == 7 ? biggerValue :smallerValue ;
   self.btn.transform =CGAffineTransformScale(self.btn.transform,setValue , setValue);
    }] ;
}
@end




















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值