UIView 中
@property(nonatomic) CGRect frame;-----不带星号*,是结构体
控件所在矩形框的位置和尺寸--以父控件的左上角为坐标原点
@property(nonatomic) CGRect bounds;
以自己左上角为坐标原点,所以bounds的x/y一般为0
@property(nonatomic) CGPoint center;
控件中点的位置--以父控件的左上角为坐标原点
@property(nonatomic) NSInteger tag;
控件的ID/标识,父控件可以通过tag来找到对应的自控件
@property(nonatomic,readonly) UIView *superView;
获得自己的父控件对象
@property(nonatomic,readonly,copy) NSArray *subViews;
获得所有子控件
后放入的控件在前面控件的上面一层,所以subViews用有存储顺序的NSArray来存储
UIButton:
1.normal :普通 default
2.highlighted:高亮
控件的上下左右移动,旋转,放大缩小:
#import <UIKit/UIKit.h> @interface CHViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *btn; - (IBAction)run:(id)sender; - (IBAction)baserun:(id)sender; - (IBAction)rotate:(id)sender; - (IBAction)baseRotate:(id)sender; - (IBAction)scale:(id)sender; @end
// CHViewController.m // buttonControl // 1.当旋转的时候如果移动会有bug---暂时解决不了,以后会解决 // Created by CH on 14-5-11. // Copyright (c) 2014年 ch. All rights reserved. // #import "CHViewController.h" //将一个数抽出来三种做法:变量,宏,const #define kDelta 50;//这样效率更高,不用分配存储控件给delta //const int DELTA = 50;//c++写法 #pragma mark 控件移动 @implementation CHViewController #pragma mark 控件上下左右移动 - (IBAction)baserun:(id)sender{//基本移动方式 //OC语法规定,不允许直接修改某个对象结构体属性的成员 //0.动画开始--保证需要动画的代码包含在这里面 [UIView beginAnimations:nil context:nil]; //设置动画参数 [UIView setAnimationDuration:3.0]; //1.先取出frame CGRect frame = _btn.frame; //新分配一个临时内存存放frame //2.再修改y值 frame.origin.y -=100; //修改了新的frame,并没有修改原来的frame //3.再赋值回按钮的frame _btn.frame=frame; //4.动画提交 [UIView commitAnimations]; } - (IBAction)run:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; CGRect frame = _btn.frame; //新分配一个临时内存存放frame //int tag = _btn.tag;这种用法不对 //sender.tag这种也不对,id类型的对象不能使用点语法,要使用getset方法 int tag = [sender tag]; //CGFloat kDelta = 50;//方式一:变量。方式二:写宏 //宏:#define kDelta 50;//这样效率更高,不用分配存储控件给delta //NSLog(@"%d",tag); switch (tag) { case 1://上 frame.origin.y -=kDelta; break; case 2://右 frame.origin.x +=kDelta; break; case 3://下 frame.origin.y +=kDelta; break; case 4://左 frame.origin.x -=kDelta; break; default: break; }//修改了新的frame,并没有修改原来的frame _btn.frame=frame; [UIView commitAnimations]; } #pragma mark 控件左旋转,右旋转 - (IBAction)baseRotate:(id)sender{//基本旋转方式 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; _btn.transform = CGAffineTransformRotate(_btn.transform, - M_PI_4); [UIView commitAnimations]; } - (IBAction)rotate:(id)sender {//左旋转 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; int tag = [sender tag]; // if (11 == tag) {//左旋转 // _btn.transform = CGAffineTransformRotate(_btn.transform, - M_PI_4); // }else if(12 == tag){//右旋转 // _btn.transform = CGAffineTransformRotate(_btn.transform, + M_PI_4); // } _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_4 * ((11==tag)?(-1):(1))); [UIView commitAnimations]; } #pragma mark 控件放大缩小 - (IBAction)scale:(id)sender{ [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; int tag = [sender tag]; // if(13 == tag){ // _btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2); // }else if(14 == tag){ // _btn.transform = CGAffineTransformScale(_btn.transform, 0.8, 0.8); // } CGFloat scale = (13==tag ? 1.2 : 0.8); _btn.transform = CGAffineTransformScale(_btn.transform, scale, scale); [UIView commitAnimations]; } @end