IOS代码添加控件,控件移动,放大,缩小,旋转
2016-11-06 23:30
489 查看
1,代码添加控件
例如:
/*
1.创建一个控件
2.设置控件的位置,大小
3.设置控件所需要的各个属性
4.添加入父控件
5.添加监听
*/
UIButton *btn1=[[UIButton alloc] init]; // 创建一个控件
btn1.frame=CGRectMake(20, 20, 100, 100); // 设置控件的位置,大小
[btn1 setTitle:@"123" forState:UIControlStateNormal]; // 设置控件所需要的各个属性
[btn1 setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];
[btn1 setTitle:@"456" forState:UIControlStateHighlighted];
[btn1 setBackgroundImage:[UIImage imageNamed:@"btn_02" ] forState:UIControlStateHighlighted];
[self.view addSubview:btn1]; // 添加入父控件
[btn1 addTarget:self action:@selector(clickMove:) forControlEvents:UIControlEventTouchUpInside]; // 添加监听
2.控件的常见属性
所有的UI控件最终都继承自UIView:
UI控件的公共属性都定义在UIView中
3.UIView的常见方法
- (void)addSubview:(UIView *)view; // 添加一个子控件view
- (void)removeFromSuperview; // 从父控件中移除
- (UIView *)viewWithTag:(NSInteger)tag; // 根据一个tag标识找出对应的控件(一般都是子控件)
// 注意:下面代码是错误的,OC语法规定:不允许直接修改对象的结构体属性的成员
self.headBtn.frame.origin.y -= 10;
图片移动的3中方式
1. transform方式来移动图片 (最常用)
// 以中心点来移动 (注意图片旋转后,移动的方向)
CGPoint p = self.headImageView.center;
switch (btn.tag) {
case kMovingDirTop:
// 改变控件的位置
p.y -= 20;
break;
case kMovingDirBottom:
p.y += 20;
break;
case KMovingDirLieft:
p.x -= 20;
break;
case kMovingDirRight:
p.x += 20;
break;
default:
break;
};
self.headImageView.center = p;
3.使用frame来控制控件位置
// 会出现问题。(如果先旋转图片后,在点击移动图片会消失不见?????)
CGRect rect=self.headImageView.frame;
switch (btn.tag) {
case kMovingDirTop:
// 改变控件的位置
rect.origin.y = rect.origin.y-20;
break;
case kMovingDirBottom:
rect.origin.y = rect.origin.y+20;
break;
case KMovingDirLieft:
rect.origin.x = rect.origin.x-20;
break;
case kMovingDirRight:
rect.origin.x = rect.origin.x+20;
break;
default:
break;
};
elf.headImageView.frame=rect;
放大,缩小,旋转控件(3种方式)
typedef enum{
kAdd=5,
KRemore,
kRotateLeft,
kRotatelRight,
}kTranform;
1.transform方式,放大,缩小,旋转控件 (最常用)
/* 会以中心点来放大,缩小,旋转控件 */
switch (btn.tag) {
case kAdd:
// 改变控件的大小
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 1.2, 1.2);
break;
case KRemore:
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 0.8, 0.8);
break;
case kRotateLeft:
// 在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI
// 正数表示顺时针旋转
// 负数表示逆时针旋转
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, -M_PI_4);
break;
case kRotatelRight:
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, M_PI_4);
break;
default:
break;
};
2. bounds方式,放大,缩小
/* 会以控件顶点来放大,缩小,然后计算出frame的x,y后再移动回去。启用动画效果时,一瞬间放大,然后移动到计算出的frame的x,y位置 */
CGRect rect = self.headImageView.bounds;
switch (btn.tag) {
case kAdd:
rect.size.width += 20;
rect.size.height += 20;
break;
case KRemore:
rect.size.width -= 20;
rect.size.height -= 20;
break;
default:
break;
};
self.headImageView.bounds = rect;
3. frame方式,放大,缩小
总结:
通过以下属性可以修改控件的位置
frame.origin
center
通过以下属性可以修改控件的尺寸
frame.size
bounds.size
利用transform属性可以修改控件的位移(位置)、缩放、旋转
例如:
/*
1.创建一个控件
2.设置控件的位置,大小
3.设置控件所需要的各个属性
4.添加入父控件
5.添加监听
*/
UIButton *btn1=[[UIButton alloc] init]; // 创建一个控件
btn1.frame=CGRectMake(20, 20, 100, 100); // 设置控件的位置,大小
[btn1 setTitle:@"123" forState:UIControlStateNormal]; // 设置控件所需要的各个属性
[btn1 setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];
[btn1 setTitle:@"456" forState:UIControlStateHighlighted];
[btn1 setBackgroundImage:[UIImage imageNamed:@"btn_02" ] forState:UIControlStateHighlighted];
[self.view addSubview:btn1]; // 添加入父控件
[btn1 addTarget:self action:@selector(clickMove:) forControlEvents:UIControlEventTouchUpInside]; // 添加监听
2.控件的常见属性
所有的UI控件最终都继承自UIView:
UI控件的公共属性都定义在UIView中
@property(nonatomic,readonly) UIView *superview; // 获得自己的父控件对象 @property(nonatomic,readonly,copy) NSArray *subviews; //获得自己的所有子控件对象 @property(nonatomic) NSInteger tag; //控件的ID(标识),父控件可以通过tag来找到对应的子控件 @property(nonatomic) CGAffineTransform transform; //控件的形变属性(可以设置旋转角度、比例缩放、平移等属性) @property(nonatomic) CGRect frame; // 控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点) @property(nonatomic) CGRect bounds; // 控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0) @property(nonatomic) CGPoint center; // 控件中点的位置(以父控件的左上角为坐标原点)
3.UIView的常见方法
- (void)addSubview:(UIView *)view; // 添加一个子控件view
- (void)removeFromSuperview; // 从父控件中移除
- (UIView *)viewWithTag:(NSInteger)tag; // 根据一个tag标识找出对应的控件(一般都是子控件)
// 注意:下面代码是错误的,OC语法规定:不允许直接修改对象的结构体属性的成员
self.headBtn.frame.origin.y -= 10;
图片移动的3中方式
1. transform方式来移动图片 (最常用)
typedef enum{ kMovingDirTop, kMovingDirBottom, KMovingDirLieft, kMovingDirRight, kMovingDir; // 已fram点来移动(注意图片旋转后,移动的方向) switch (btn.tag) { case kMovingDirTop: // 改变控件的位置 self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 0, -20); break; case kMovingDirBottom: self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 0, 20); break; case KMovingDirLieft: self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, -20, 0); break; case kMovingDirRight: self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 20, 0); break; default: break; };2. 使用center来移动控件
// 以中心点来移动 (注意图片旋转后,移动的方向)
CGPoint p = self.headImageView.center;
switch (btn.tag) {
case kMovingDirTop:
// 改变控件的位置
p.y -= 20;
break;
case kMovingDirBottom:
p.y += 20;
break;
case KMovingDirLieft:
p.x -= 20;
break;
case kMovingDirRight:
p.x += 20;
break;
default:
break;
};
self.headImageView.center = p;
3.使用frame来控制控件位置
// 会出现问题。(如果先旋转图片后,在点击移动图片会消失不见?????)
CGRect rect=self.headImageView.frame;
switch (btn.tag) {
case kMovingDirTop:
// 改变控件的位置
rect.origin.y = rect.origin.y-20;
break;
case kMovingDirBottom:
rect.origin.y = rect.origin.y+20;
break;
case KMovingDirLieft:
rect.origin.x = rect.origin.x-20;
break;
case kMovingDirRight:
rect.origin.x = rect.origin.x+20;
break;
default:
break;
};
elf.headImageView.frame=rect;
放大,缩小,旋转控件(3种方式)
typedef enum{
kAdd=5,
KRemore,
kRotateLeft,
kRotatelRight,
}kTranform;
1.transform方式,放大,缩小,旋转控件 (最常用)
/* 会以中心点来放大,缩小,旋转控件 */
switch (btn.tag) {
case kAdd:
// 改变控件的大小
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 1.2, 1.2);
break;
case KRemore:
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 0.8, 0.8);
break;
case kRotateLeft:
// 在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI
// 正数表示顺时针旋转
// 负数表示逆时针旋转
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, -M_PI_4);
break;
case kRotatelRight:
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, M_PI_4);
break;
default:
break;
};
2. bounds方式,放大,缩小
/* 会以控件顶点来放大,缩小,然后计算出frame的x,y后再移动回去。启用动画效果时,一瞬间放大,然后移动到计算出的frame的x,y位置 */
CGRect rect = self.headImageView.bounds;
switch (btn.tag) {
case kAdd:
rect.size.width += 20;
rect.size.height += 20;
break;
case KRemore:
rect.size.width -= 20;
rect.size.height -= 20;
break;
default:
break;
};
self.headImageView.bounds = rect;
3. frame方式,放大,缩小
/* 会以控件顶点来放大,缩小*/ CGRect rect = self.headImageView.frame; switch (btn.tag) { case kAdd: rect.size.width += 20; rect.size.height += 20; break; case KRemore: rect.size.width -= 20; rect.size.height -= 20; break; default: break; }; self.headImageView.frane = rect;
总结:
通过以下属性可以修改控件的位置
frame.origin
center
通过以下属性可以修改控件的尺寸
frame.size
bounds.size
利用transform属性可以修改控件的位移(位置)、缩放、旋转
相关文章推荐
- IOS代码添加控件,控件移动,放大,缩小,旋转
- IOS代码添加控件,控件移动,放大,缩小,旋转
- IOS代码添加控件,控件移动,放大,缩小,旋转
- IOS代码添加控件,控件移动,放大,缩小,旋转
- IOS代码添加控件,控件移动,放大,缩小,旋转
- IOS代码添加控件,控件移动,放大,缩小,旋转
- [iOS开发项目-3] 按钮控件的移动,放大缩小,左右旋转操作
- 猫猫学IOS(二)UI之按钮操作 点击变换 移动 放大缩小 旋转
- 初学Cocosd-x,添加一个小图片,并把它缩小,旋转,移动,的代码(用的是c++)
- 猫猫学IOS(二)UI之按钮操作 点击变换 移动 放大缩小 旋转
- iOS 图片查看关闭,以及放大缩小旋转移动
- IOS 图片放大缩小移动,使用block精简代码
- 猫猫学IOS(二)UI之button操作 点击变换 移动 放大缩小 旋转
- iOS CABasicAnimation的基本使用方法(移动·旋转·放大·缩小)
- AJ学IOS(02)UI之按钮操作 点击变换 移动 放大缩小 旋转
- 控件移动,放大,缩小,旋转
- iOS通过代码动态添加和删除控件
- IOS——地图的使用、地图定位到当前位置(包括ios8获取位置)、地图标注的添加、地图放大缩小监听
- ios实现button变换颜色并可以放大、缩小、旋转