十三:UIView中frame的封装(方便使用x,y,width,height,center,size等)

  新建一个继承自UIView的扩展类

  在.h文件中写代码:

1 @property (assign, nonatomic)CGSize size;
2 @property (assign, nonatomic)CGFloat width;
3 @property (assign, nonatomic)CGFloat height;
4 @property (assign, nonatomic)CGFloat x;
5 @property (assign, nonatomic)CGFloat y;
6 @property (assign, nonatomic)CGFloat centerX;
7 @property (assign, nonatomic)CGFloat centerY;

  在.m文件中

 1 - (void)setSize:(CGSize)size
 2 {
 3     CGRect frame = self.frame;
 4     frame.size = size;
 5     self.frame = frame;
 6 }
 7 - (CGSize)size
 8 {
 9     return self.frame.size;
10 }
11
12 - (void)setWidth:(CGFloat)width
13 {
14     CGRect frame = self.frame;
15     frame.size.width = width;
16     self.frame = frame;
17 }
18 - (CGFloat)width
19 {
20     return self.frame.size.width;
21 }
22 - (void)setHeight:(CGFloat)height
23 {
24     CGRect frame = self.frame;
25     frame.size.height = height;
26     self.frame = frame;
27 }
28 - (void)setX:(CGFloat)x
29 {
30     CGRect frame = self.frame;
31     frame.origin.x = x;
32     self.frame = frame;
33 }
34 - (void)setY:(CGFloat)y
35 {
36     CGRect frame = self.frame;
37     frame.origin.y = y;
38     self.frame = frame;
39 }
40
41 - (CGFloat)height
42 {
43     return self.frame.size.height;
44 }
45 - (CGFloat)x
46 {
47     return self.frame.origin.x;
48 }
49 - (CGFloat)y
50 {
51     return self.frame.origin.y;
52 }
53 - (void)setCenterX:(CGFloat)centerX
54 {
55     CGPoint center = self.center;
56     center.x = centerX;
57     self.center = center;
58 }
59 - (void)setCenterY:(CGFloat)centerY
60 {
61     CGPoint center = self.center;
62     center.y = centerY;
63     self.center = center;
64 }
65 - (CGFloat)centerX
66 {
67     return self.center.x;
68 }
69 - (CGFloat)centerY
70 {
71     return self.center.y;
72 }

  如果把它导入放到PCH文件中,则整个项目所有文件夹都可以直接使用,比如想设置某个控件的尺寸:

button.x  button.y  button.width  label.centerX  label.size等等,所以上面封装过的属性都可以直接点出来

时间: 2024-11-24 07:21:26

十三:UIView中frame的封装(方便使用x,y,width,height,center,size等)的相关文章

[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性

大家应该知道如何设置一个view组件的位置把,是的,如下: view.frame=CGRectMake(x,y,width,height);//设置组件的x,y坐标,设置组件的宽度高度... 如果我单独要设置坐标或者宽度高度,得这样: view.frame.size.width=100; view.frame.size.height=100; 如果你想偷个懒,比如: view.frame.size=(CGSize){200,200};//这个语句会报错,因为无法对size赋值 通过上面的代码,大

直接设置UIView的x,y,width,height...

// 为UIView写分类 //UIView+Extension.h #import <UIKit/UIKit.h> @interface UIView (Extension) @property (nonatomic, assign) CGFloat x; @property (nonatomic, assign) CGFloat y; @property (nonatomic, assign) CGFloat width; @property (nonatomic, assign) CGF

Swift学习之UIView延展添加新属性left,right,top,bottom,width,height,centerx,centery

import Foundation import UIKit import CoreGraphics extension UIView{ var left:CGFloat{ set{ var frame = self.frame frame.origin.x = newValue self.frame = frame } get{ return self.frame.origin.x } } var top:CGFloat{ set{ var frame = self.frame frame.o

【iOS7的一些总结】8、破解UIView中坐标系的秘密:关于UIView中的frame、bound和center

对于刚刚接触iOS开发不久的新手来说,UIView中的frame.bound和center的确容易产生思维的误区,尤其是想要对视图类的bound这个概念若想要理解深入,真的要花一番功夫.在经过一系列查阅参考资料和动手试验之后,终于对这几个概念产生了一些领悟,记录于此可供有同样困惑的同学参考. 首先贴一篇博文做参考,http://blog.csdn.net/mad1989/article/details/8711697:这篇博文已经对UIView的frame和bound做了一些阐述,但是我依然觉得

ios开发之UIView的frame、bounds跟center属性的区别(附图)

博文暂时想到什么写什么,不顺理成章,不顺章成篇. 先看几个概念 坐标点Poit:向右侧为X轴正方向的值x,原点下侧为Y轴正方向的值y 大小Size:由宽度width和高度height构成,表示一个矩形 区域Rect:它有坐标点Poit和大小Size构成,表示一个区域,既有位置也有大小 相对:有参照物,因参照物的大小位置改变而改变 绝对:无参照物,大小位置固定 再看代码构成: 点由这样来创建,X轴大小和Y大小 CGPoint point = CGPointMake(80,40) 大小Size由这样

swift和OC中frame的小差异

//1.0 OC中 CGRect .CGPoint.CGSize 的结构如下: struct CGRect { CGPoint origin; CGSize size; }; struct CGPoint { CGFloat x; CGFloat y; }; struct CGSize { CGFloat width; CGFloat height; }; 在OC环境下,我们要改变一个控件的frame(如:x 或者 y .width .height)时,我们得定义一个临时的frame(假设为 C

swift关于UIView设置frame值的extension

使用 说明 1. 使用如上图,很简单,不再赘述 2. 在extension给添加的计算属性提供getter,setter方法即可 源码 // // UIView+SetRect.swift // YouXianMing // // Created by YouXianMing on 15/9/29. // Copyright © 2015年 YouXianMing All rights reserved. // import UIKit extension UIView { // x var x

区别CSS中display:box;inline;none以及HTML中 &lt;frame&gt; 标签&lt;table&gt; 标签的 frame 属性

区别display:box:display:inline:display:none三者的不同 display:block的特点是: block是Display默认的值.总是在新行上开始:该对象随后的内容自动换行;行高以及顶和底边距都可控制:宽度缺省是它的容器的100%,除非设定一个宽度:<div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子,意思是他们默认显示方式是block: display:inl

UI中 frame 与 transform的用法与总结

在iOS中,我们是不可以直接访问控件中frame的结构体的成员的,因此我们需要分三步来改变一个UI控件的位置,大小 一.frame用法 frame的结构体类型为: struct CGRect { CGPoint origin; CGSize size; }; 定义中间变量接收,然后赋值    //得到button控件的frame赋值为自定义变量 CGRect frame= self.btnImage.frame;    //修改结构体变量   frame.origin.y-=10;    //重