1、已知frame(包含位置和大小),但center(只能修改位置)、bounds(只能修改大小)、transform最强大,既能修改位置和大小还能控制旋转。
注意:frame获取的x和y指的是控件左上角的位置坐标。而center指的是控件中心点的位置。控件的frame类型是CGRect,而控件的center是CGPoint类型。要特别注意的是控件的bounds也是CGRect类型,但它内部的x和y永远为0,无法修改。
2、通过center移动位置。步骤与frame相同:
(1)先获取控件原始的center
(2)修改center的值
(3)再把修改后的center重新赋值给控件的center。格式如下:
CGPoint centerPoint=self.控件属性名.center;(假设控件属性名为zujian)
centerPoint.x+=10;或centerPoint.y-=10;
self.zujian.center=centerPoint;
提示:操作技巧:选中一大片代码,按“command +左花括号”可以向左整体移动,加又花括号可以整体向右移动。
3、通过bounds修改大小。因为bounds里面的x和y值永远为0,只能通过bounds修改控件的大小。步骤与前面相同:
(1)获取原始的bounds
(2)修改bounds的值
(3)重新赋值
CGoriginBounds=self.zujian.bounds;
NSLog(@“%@”,NSStringFromCGRect(originBounds));
originBounds.size.width+=10;
originBounds.size.height+=10;
self.zujian.bounds=originBounds;
注意:一般很多类型都可以装换为NSString类型,可以用前缀
NSStringFrom进行寻找。
注意:frame获取的x和y指的是控件左上角的位置坐标。而center指的是控件中心点的位置。控件的frame类型是CGRect,而控件的center是CGPoint类型。要特别注意的是控件的bounds也是CGRect类型,但它内部的x和y永远为0,无法修改。
2、通过center移动位置。步骤与frame相同:
(1)先获取控件原始的center
(2)修改center的值
(3)再把修改后的center重新赋值给控件的center。格式如下:
CGPoint centerPoint=self.控件属性名.center;(假设控件属性名为zujian)
centerPoint.x+=10;或centerPoint.y-=10;
self.zujian.center=centerPoint;
提示:操作技巧:选中一大片代码,按“command +左花括号”可以向左整体移动,加又花括号可以整体向右移动。
3、通过bounds修改大小。因为bounds里面的x和y值永远为0,只能通过bounds修改控件的大小。步骤与前面相同:
(1)获取原始的bounds
(2)修改bounds的值
(3)重新赋值
CGoriginBounds=self.zujian.bounds;
NSLog(@“%@”,NSStringFromCGRect(originBounds));
originBounds.size.width+=10;
originBounds.size.height+=10;
self.zujian.bounds=originBounds;
注意:一般很多类型都可以装换为NSString类型,可以用前缀
NSStringFrom进行寻找。
具体步骤如下图
一
二、
三
四
五
再控制器的.m文件内的监听方法体内编辑代码如下
//
// ViewController.m
// Button
//
// Created by apple on 15/8/25.
// Copyright (c) 2015年 LiuXun. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *zujian;
- (IBAction)move:(UIButton *)sender;
- (IBAction)smallAndBig:(UIButton *)sender;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)move:(UIButton *)sender {
// 为每个按钮设置不同的tag值,然后在这个方法中就可以根据sender.tag来判断用户当前点击的是哪个按钮
// 1. 获取原始的center
CGPoint originCenter=self.zujian.center;
// 2.修改frame
switch (sender.tag) {
case 10:
originCenter.y-=10;
break;
case 20:
originCenter.x+=10;
break;
case 30 :
originCenter.y+=10;
break;
case 40 :
originCenter.x-=10;
break;
default:
break;
}
self.zujian.center=originCenter;
}
- (IBAction)smallAndBig:(UIButton *)sender {
// 1、获取原始组件的原始bounds
CGRect originBounds=self.zujian.bounds;
// 2、修改大小bounds
if (sender.tag==100) {
originBounds.size.width+=10;
originBounds.size.height+=10;
}else if(sender.tag==200){
originBounds.size.width-=10;
originBounds.size.height-=10;
}
// 3 、把修改后的bounds赋值给组件的bounds
self.zujian.bounds=originBounds;
}
@end
运行结果如下:
注意:bounds实现的大小改变其实是围绕中心点位置
而frame实现的大小改变是围绕组件的左上角位置