博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
frame和bounds
阅读量:6271 次
发布时间:2019-06-22

本文共 2608 字,大约阅读时间需要 8 分钟。

frame其实也是一个结构体,是CGRect的一个变量。
//
//  ViewController.m
//  UIView01
//
//  Created by cqy on 16/2/12.
//  Copyright © 2016年 程清杨. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    //创建View对象
    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 200, 100)];
    //设置背景颜色
    view1.backgroundColor = [UIColor yellowColor];
    //添加视图
    [self.view addSubview:view1];
    //frame其实也是一个结构体,有两个成员变量均为结构体,两个成员变量分别有两个成员变量都是cgfloat类型的;
    UIView *view2 = [[UIView alloc]init];
    view2.frame = CGRectMake(20, 140, 200, 100);
    view2.backgroundColor = [UIColor greenColor];
    [self.view addSubview:view2];
    // Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
bounds:在每添加⼀个
view的时候,每个view分别以⾃⼰的起点为(0,0)点,创建⼀个坐标系,这个bounds就是⼀个结构体,⽤来确定view的新坐标。 
//  ViewController.m
//  UIView01
//
//  Created by cqy on 16/2/12.
//  Copyright © 2016年 程清杨. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    //创建View对象
    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 200, 100)];
    //设置背景颜色
    view1.backgroundColor = [UIColor yellowColor];
    //添加视图
    [self.view addSubview:view1];
    //frame其实也是一个结构体,有两个成员变量均为结构体,两个成员变量分别有两个成员变量都是cgfloat类型的;
    UIView *view2 = [[UIView alloc]init];
    view2.frame = CGRectMake(20, 140, 200, 100);
    view2.backgroundColor = [UIColor greenColor];
    [self.view addSubview:view2];
    //bounds也是结构体,与frame一样。只是坐标是从原点开始;
    UIView *view3 = [[UIView alloc]init];
    view3.bounds = CGRectMake(0, 0, 50, 50);
    view3.backgroundColor = [UIColor redColor];
    [view2 addSubview:view3];
    NSLog(@"view1.bounds:%@",NSStringFromCGRect(view1.bounds));//结果:view1.bounds:{
{0, 0}, {200, 100}}
    NSLog(@"view1.frame:%@",NSStringFromCGRect(view1.frame));//结果: view1.frame:{
{20, 20}, {200, 100}}
    //center是以视图坐标系为参照,取得中点
    UIView *view4 = [[UIView alloc]initWithFrame:CGRectMake(20, 260, 200, 100)];
    view4.backgroundColor = [UIColor brownColor];
    [self.view addSubview:view4];
     NSLog(@"view1.center:%@",NSStringFromCGPoint(view1.center));//结果:view1.center:{120, 70}
    // Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
 
frame与bounds的区别:frame与bounds都是结构体,都是⽤来确定位置和⼤⼩的;
frame的位置是从屏幕的最左上⾓开始算的;    
bounds是从新添加的view的最左上⾓的点开始算。

转载于:https://www.cnblogs.com/iQingYang/p/5193167.html

你可能感兴趣的文章
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
C++零基础教程(一)——何谓编程
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
使用rsync的文件和目录排除列表
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
设置 SecureCRT RZ 默认目录
查看>>
逆波兰表达式求值 javascript版
查看>>
SO_KEEPALIVE
查看>>
运维基础命令
查看>>
zookeeper系列(八)zookeeper运维
查看>>
Linux下的lds链接脚本简介(二)
查看>>