iphone开发之UIButton按钮的使用(三)拖线实现 center和bounds实现控制组件的大小和位置

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进行寻找。

具体步骤如下图


二、





再控制器的.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实现的大小改变是围绕组件的左上角位置


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值