常用宏定义
//-------------------获取设备大小-------------------------
//NavBar高度
#define NavigationBar_HEIGHT 44
//获取屏幕 宽度、高度
#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
//----------------------系统----------------------------
// 是否iPad
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
// 是否iPad
#define someThing (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)? ipad: iphone
//获取系统版本
#define IOS_VERSION [[UIDevice currentDevice] systemVersion] floatValue]
#define CurrentSystemVersion [UIDevice currentDevice] systemVersion]
//获取当前语言
#define CurrentLanguage ([NSLocale preferredLanguages] objectAtIndex:0])
//判断是否 Retina屏、设备是否%fhone 5、是否是iPad
#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [UIScreen mainScreen] currentMode].size) : NO)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [UIScreen mainScreen] currentMode].size) : NO)
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
//判断设备的操做系统是不是ios7
#define IOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0]
//判断当前设备是不是iphone5
#define kScreenIphone5 (([UIScreen mainScreen] bounds].size.height)>=568)
//G-C-D
#define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
#define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)
//NSUserDefaults 实例化
#define USER_DEFAULT [NSUserDefaults standardUserDefaults]
//由角度获取弧度 有弧度获取角度
#define degreesToRadian(x) (M_PI * (x) / 180.0)
#define radianToDegrees(radian) (radian*180.0)/(M_PI)
//方正黑体简体字体定义
#define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F]
1. transform属性
在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度
常用的创建transform结构体方法分两大类
(1) 创建“基于控件初始位置”的形变
CGAffineTransformMakeTranslation(平移)
CGAffineTransformMakeScale(缩放)
CGAffineTransformMakeRotation(旋转)
(2) 创建“基于transform参数”的形变
CGAffineTransformTranslate
CGAffineTransformScale
CGAffineTransformRotate
补充:
在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI
正数表示顺时针旋转
负数表示逆时针旋转
1 // 2 // YYViewController.m 3 // 01-练习使用按钮的frame和center属性 4 // 5 // Created by apple on 14-5-21. 6 // Copyright (c) 2014年 itcase. All rights reserved.7 // 8 9 #import "YYViewController.h" 10 11 //私有扩展 12 @interface YYViewController () 13 14 @property(nonatomic,weak)IBOutletUIButton
*
headImageView;
15
@end
16
17
@implementation
YYViewController
18
19
//
枚举类型,从1开始
20
//
枚举类型有一个很大的作用,就是用来代替程序中的魔法数字
21
typedef
enum
22
{
23
ktopbtntag=
1
,
24
kdownbtntag,
25
krightbtntag,
26
kleftbtntag
27
}btntag;
28
29
//
viewDidLoad是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作
30
- (
void
)viewDidLoad
31
{
32
33
//
在viewDidLoad方法中,不要忘记调用父类的方法实现
34
[super viewDidLoad];
35
36
37
//
手写控件代码
38
//
一、写一个按钮控件,上面有一张图片
39
40
//
1.使用类创建一个按钮对象
41
//
UIButton *headbtn=[[UIButton alloc] initWithFrame:CGRectMake(100,100, 100, 100)];
42
//
设置按钮对象为自定义型
43
UIButton *headbtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
44
45
//
2.设置对象的各项属性
46
47
//
(1)位置等通用属性设置
48
headbtn.frame=CGRectMake(
100
,
100
,
100
,
100
);
49
50
//
(2)设置普通状态下按钮的属性
51
[headbtn setBackgroundImage:[UIImage imageNamed:
@"
i
"
]forState:UIControlStateNormal];
52
[headbtn setTitle:
@"
点我!
"
forState:UIControlStateNormal];
53
[headbtn setTitleColor:[UIColor redColor]forState:UIControlStateNormal];
54
55
//
(3)设置高亮状态下按钮的属性
56
[headbtn setBackgroundImage:[UIImage imageNamed:
@"
a
"
]forState:UIControlStateHighlighted];
57
[headbtn setTitle:
@"
还行吧~
"
forState:UIControlStateHighlighted];
58
[headbtn setTitleColor:[UIColor blueColor]forState:UIControlStateHighlighted];
59
60
//
3.把对象添加到视图中展现出来
61
[self.view addSubview:headbtn];
62
//
注意点!
63
self.headImageView=
headbtn;
64
65
66
//
二、写四个控制图片左右上下移动方向的按钮控件
67
68
69
//
1.创建按钮对象
70
UIButton *topbtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
71
72
//
2.设置对象的属性
73
topbtn.frame=CGRectMake(
100
,
250
,
40
,
40
);
74
[topbtn setBackgroundImage:[UIImage imageNamed:
@"
top_normal
"
]forState:UIControlStateNormal];
75
[topbtn setBackgroundImage:[UIImage imageNamed:
@"
top_highlighted
"
]forState:UIControlStateHighlighted];
76
[topbtn setTag:
1
];
77
//
3.把控件添加到视图中
78
[self.view addSubview:topbtn];
79
80
//
4.按钮的单击控制事件
81
[topbtn addTarget:self action:@selector(Click:)forControlEvents:UIControlEventTouchUpInside];
82
83
84
85
//
1.创建按钮对象
86
UIButton *downbtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
87
//
2.设置对象的属性
88
downbtn.frame=CGRectMake(
100
,
350
,
40
,
40
);
89
[downbtn setBackgroundImage:[UIImage imageNamed:
@"
bottom_normal
"
]forState:UIControlStateNormal];
90
[downbtn setBackgroundImage:[UIImage imageNamed:
@"
bottom_highlighted
"
]forState:UIControlStateHighlighted];
91
[downbtn setTag:
2
];
92
//
3.把控件添加到视图中
93
[self.view addSubview:downbtn];
94
95
//
4.按钮的单击控制事件
96
[downbtn addTarget:self action:@selector(Click:)forControlEvents:UIControlEventTouchUpInside];
97
98
99
100
//
1.创建按钮对象
101
UIButton *leftbtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
102
//
2.设置对象的属性
103
leftbtn.frame=CGRectMake(
50
,
300
,
40
,
40
);
104
[leftbtn setBackgroundImage:[UIImage imageNamed:
@"
left_normal
"
]forState:UIControlStateNormal];
105
[leftbtn setBackgroundImage:[UIImage imageNamed:
@"
left_highlighted
"
]forState:UIControlStateHighlighted];
106
[leftbtn setTag:
4
];
107
//
3.把控件添加到视图中
108
[self.view addSubview:leftbtn];
109
110
//
4.按钮的单击控制事件
111
[leftbtn addTarget:self action:@selector(Click:)forControlEvents:UIControlEventTouchUpInside];
112
113
114
115
116
//
1.创建按钮对象
117
UIButton *rightbtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
118
//
2.设置对象的属性
119
rightbtn.frame=CGRectMake(
150
,
300
,
40
,
40
);
120
[rightbtn setBackgroundImage:[UIImageimageNamed:
@"
right_normal
"
]forState:UIControlStateNormal];
121
[rightbtn setBackgroundImage:[UIImageimageNamed:
@"
right_highlighted
"
]forState:UIControlStateHighlighted];
122
[rightbtn setTag:
3
];
123
//
3.把控件添加到视图中
124
[self.view addSubview:rightbtn];
125
126
//
4.按钮的单击控制事件
127
[rightbtn addTarget:self action:@selector(Click:)forControlEvents:UIControlEventTouchUpInside];
128
129
//
三、写两个缩放按钮
130
131
//
1.创建对象
132
UIButton *plusbtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
133
//
2.设置属性
134
plusbtn.frame=CGRectMake(
75
,
400
,
40
,
40
);
135
[plusbtn setBackgroundImage:[UIImage imageNamed:
@"
plus_normal
"
]forState:UIControlStateNormal];
136
[plusbtn setBackgroundImage:[UIImage imageNamed:
@"
plus_highlighted
"
]forState:UIControlStateHighlighted];
137
[plusbtn setTag:
1
];
138
//
3.添加到视图
139
[self.view addSubview:plusbtn];
140
//
4.单击事件
141
[plusbtn addTarget:self action:@selector(Zoom:)forControlEvents:UIControlEventTouchUpInside];
142
143
144
145
UIButton *minusbtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
146
minusbtn.frame=CGRectMake(
125
,
400
,
40
,
40
);
147
[minusbtn setBackgroundImage:[UIImageimageNamed:
@"
minus_normal
"
]forState:UIControlStateNormal];
148
[minusbtn setBackgroundImage:[UIImageimageNamed:
@"
minus_highlighted
"
]forState:UIControlStateHighlighted];
149
[minusbtn setTag:
0
];
150
[self.view addSubview:minusbtn];
151
[minusbtn addTarget:self action:@selector(Zoom:)forControlEvents:UIControlEventTouchUpInside];
152
153
154
UIButton *leftrotatebtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
155
[leftrotatebtn setFrame:CGRectMake(
175
,
400
,
40
,
40
)];
156
[leftrotatebtn setBackgroundImage:[UIImageimageNamed:
@"
left_rotate_normal
"
]forState:UIControlStateNormal];
157
[leftrotatebtn setBackgroundImage:[UIImageimageNamed:
@"
left_rotate_highlighted
"
]forState:UIControlStateHighlighted];
158
[leftrotatebtn setTag:
1
];
159
[self.view addSubview:leftrotatebtn];
160
[leftrotatebtn addTarget:self action:@selector(Rotate:)forControlEvents:UIControlEventTouchUpInside];
161
162
163
UIButton *rightrotatebtn=
[UIButtonbuttonWithType:UIButtonTypeCustom];
164
[rightrotatebtn setFrame:CGRectMake(
225
,
400
,
40
,
40
)];
165
[rightrotatebtn setBackgroundImage:[UIImageimageNamed:
@"
right_rotate_normal
"
]forState:UIControlStateNormal];
166
[rightrotatebtn setBackgroundImage:[UIImageimageNamed:
@"
right_rotate_highlighted
"
]forState:UIControlStateHighlighted];
167
[rightbtn setTag:
0
];
168
[self.view addSubview:rightrotatebtn];
169
[rightrotatebtn addTarget:self action:@selector(Rotate:)forControlEvents:UIControlEventTouchUpInside];
170
}
171
172
//
控制方向的多个按钮调用同一个方法
173
-(
void
)Click:(UIButton*
)button
174
{
175
176
//
练习使用frame属性
177
//
CGRectframe=self.headImageView.frame;
178
179
180
//
练习使用center属性
181
CGPoint center=
self.headImageView.center;
182
switch
(button.tag) {
183
case
ktopbtntag:
184
center.y-=
30
;
185
break
;
186
case
kdownbtntag:
187
center.y+=
30
;
188
break
;
189
case
kleftbtntag:
190
//
发现一个bug,之前的问题是因为少写了break,造成了它们的顺序执行,sorry
191
//
center.x=center.x-30;
192
center.x-=
50
;
193
break
;
194
case
krightbtntag:
195
center.x+=
50
;
196
break
;
197
}
198
199
//
self.headImageView.frame=frame;
200
201
//
首尾式设置动画效果
202
[UIView beginAnimations:nil context:nil];
203
self.headImageView.center=
center;
204
//
设置时间
205
[UIView setAnimationDuration:
2.0
];
206
[UIView commitAnimations];
207
NSLog(
@"
移动!
"
);
208
209
}
210
-(
void
)Zoom:(UIButton*
)btn
211
{
212
//
使用bounds,以中心点位原点进行缩放
213
CGRect bounds =
self.headImageView.bounds;
214
if
(btn.tag) {
215
bounds.size.height+=
30
;
216
bounds.size.width+=
30
;
217
}
218
else
219
{
220
bounds.size.height-=
50
;
221
bounds.size.width-=
50
;
222
}
223
224
//
设置首尾动画
225
[UIView beginAnimations:nil context:nil];
226
self.headImageView.bounds=
bounds;
227
[UIView setAnimationDuration:
2.0
];
228
[UIView commitAnimations];
229
}
230
231
-(
void
)Rotate:(UIButton*
)rotate
232
{
233
//
位移(不累加)
234
//
self.headImageView.transform=CGAffineTransformMakeTranslation(50,200);
235
//
缩放
236
//
self.headImageView.transform=CGAffineTransformMakeScale(1.2,10);
237
//
在原有的基础上位移(是累加的)
238
//
self.headImageView.transform=CGAffineTransformTranslate(self.headImageView.transform,50, 50);
239
//
在原有的基础上进行缩放
240
//
self.headImageView.transform=CGAffineTransformScale(self.headImageView.transform,1.5, 1.6);
241
242
//
在原有的基础上进行旋转
243
if
(rotate.tag) {
244
//
旋转角度为1/pi,逆时针
245
self.headImageView.transform=CGAffineTransformRotate(self.headImageView.transform,-
M_1_PI);
246
}
247
else
248
{
249
//
旋转的角度为pi/2,顺时针
250
self.headImageView.transform=
CGAffineTransformRotate(self.headImageView.transform,
M_PI_2); 251 } 252 253 } 254 @end
学习ios 重要还是要理清楚思路 在做或者看老师代码的时候 自己多想想为什么 不要自己看着就抄 另外还是要推荐一下 蓝懿IOS这个培训机构 和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!
写博客第七十六天;
QQ:565803433