UIView的frame的扩展分类,轻松取出x、y、height、width等值

时间:2021-08-05 22:22:15

一、引言:

在ios开发中,就界面搭建、控件布局时,都会很恶心的通过很长的代码才能取出控件的x、y、height、width等值,大大降低了开发效率。那为了省略这些恶心的步骤,小编在这里给UIView添加了一个关于frame的扩展分类。

二、添加了分类之后的效果对比

1、未添加分类前取值:

    self.view.frame.size.width;
self.view.frame.size.height;
self.view.frame.origin.x;
self.view.frame.origin.y;

2、添加了分类之后取值:

    self.view.height;
self.view.width;
self.view.x;
self.view.y;
self.view.size;

三、添加分类操作:

1、添加分类:

说明:在分类中通过@property添加属性时,只能声明属性及其set、get方法,但没有实现其set、get方法,需要自己实现:set、get方法

#import <UIKit/UIKit.h>

@interface UIView (ICKExtensionOfFrame)

@property (nonatomic,assign) CGFloat x;
@property (nonatomic,assign) CGFloat y;
@property (nonatomic,assign) CGFloat width;
@property (nonatomic,assign) CGFloat height;
@property (nonatomic,assign) CGSize size; @end
 #import "UIView+ICKExtensionOfFrame.h"

 @implementation UIView (ICKExtensionOfFrame)
/**
* x 的set\get方法实现
*/
- (void)setX:(CGFloat)x
{
CGRect rect = self.frame;
rect.origin.x = x;
self.frame = rect;
}
- (CGFloat)x
{
return self.frame.origin.x;
} /**
* y 的set\get方法实现
*/
- (void)setY:(CGFloat)y
{
CGRect rect = self.frame;
rect.origin.y = y;
self.frame = rect;
}
- (CGFloat)y
{
return self.frame.origin.y;
} /**
* width 的set\get方法实现
*/
- (void)setWidth:(CGFloat)width
{
CGRect rect = self.frame;
rect.size.width = width;
self.frame = rect;
}
- (CGFloat)width
{
return self.frame.size.width;
} /**
* height 的set\get方法实现
*/
- (void)setHeight:(CGFloat)height
{
CGRect rect = self.frame;
rect.size.height = height;
self.frame = rect;
}
- (CGFloat)height{
return self.frame.size.height;
} /**
* size 的set\get方法实现
*/
- (void)setSize:(CGSize)size
{
CGRect rect = self.frame;
rect.size = size;
self.frame = rect;
}

2、将其头文件导入项目的.pch

#import "UIView+ICKExtensionOfFrame.h"

3、在此项目中的任何控件的frame的属性取值,都可以直接取出。

UIView的frame的扩展分类,轻松取出x、y、height、width等值的更多相关文章

  1. PHP&period;38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改

    商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...

  2. PHP&period;37-TP框架商城应用实例-后台13-商品管理-扩展分类的添加、显示【数据分组】、搜索分类【多对多】

    商品扩展分类 需求:一件商品能有多个扩展分类,搜索任何一个分类都能搜出该商品 建表[扩展分类表] drop table if exists p39_goods_cat; create table p3 ...

  3. ios开发之UIView的frame、bounds跟center属性的区别&lpar;附图&rpar;

    博文暂时想到什么写什么,不顺理成章,不顺章成篇. 先看几个概念 坐标点Poit:向右侧为X轴正方向的值x,原点下侧为Y轴正方向的值y 大小Size:由宽度width和高度height构成,表示一个矩形 ...

  4. UIView的frame和bounds区别

    UIView的frame和bounds区别 iOS中,大家肯定对view和frame都不陌生,我们设置view在父view中的位置和大小时,只需要设置frame就可以了. 可能大家也有查过网上的一些资 ...

  5. UIView 中 frame&comma; bounds&comma; center 属性的关系

    最近一直在学 iOS 开发,所以专门创建了这样一个类别,将自己学习中的一些问题整理,记录下来.由于自己是初学者,所以所写的文章非常基础,写这个类别一是为了给自己留下存 档,二是为了给和我有同样问题的初 ...

  6. ecshop后台管理显示扩展分类

    ecshop 后台商品列表默认只显示分类下的商品,而不显示扩展分类中的商品,以下是我个人给出的解决方法: 打开admin/includes/lib_goods.php 第839行左右的位置 可以看到如 ...

  7. &lbrack;UIKit学习&rsqb;01&period;关于UIView,frame,bounds,center

    UIView是Cocoa大多控件的父类,本身不带事件. UIView的常见用法 @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 ...

  8. swift关于UIView设置frame值的extension

    swift关于UIView设置frame值的extension 使用 说明 1. 使用如上图,很简单,不再赘述 2. 在extension给添加的计算属性提供getter,setter方法即可 源码 ...

  9. CALayer的position&comma;anchorPoint属性 与UIView的frame 属性

    彻底理解CALayer的position,anchorPoint属性 与UIView的frame 属性 一.position,anchorPoint两者都是CALayer的属性,都是CGPoint点 ...

随机推荐

  1. 100 个 Linux 常用命令大全

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出 ...

  2. &lbrack;Android Pro&rsqb; 常用的android工具类和库

    reference to  : http://blog.csdn.net/lovexieyuan520/article/details/50614086 这篇博客主要记录我认为比较有用的Android ...

  3. &lbrack;家里蹲大学数学杂志&rsqb;第237期Euler公式的美

    1 Euler 公式 $e^{i\pi}+1=0$ (1) 它把 a.  $e:$ 自然对数的底 $\approx 2. 718281828459$ (数分) b.  $i$: 虚数单位 $=\sqr ...

  4. input file美化

    <style> a{display:inline-block; width:100px; height:40px; position:relative; overflow:hidden;} ...

  5. net Datable 基本操作

    net Datable 基本操作 using System; using System.Collections.Generic; using System.Text; using System.Dat ...

  6. JavaScript的问题

    定义一个函数function, function testParams() { var params = ""; for(var i=0; i<arguments.lengt ...

  7. MySQL注射的过滤绕过技巧

    SQL注射的绕过技巧较多,此文仅做一些简单的总结. 最好利用的注射点: 支持Union 可报错 支持多行执行.可执行系统命令.可HTTP Request等额外有利条件 若非以上类型,则可能需要暴力猜解 ...

  8. haproxy&plus;tomcat集群搭建

    web1和web2的部署可参考我之前的文章<Tomcat集群搭建>,这里就省去该过程了. #安装haproxy- .tar.gz cd haproxy-/ make TARGET=linu ...

  9. Spring 发送内嵌图片的邮件 遇到的问题

    问题1:spring 发送带图片的html格式的邮件? 解决方法1:直接在发送内容里面添加 <img src="http://www.rgagnon.com/images/jht.gi ...

  10. MOT南京站 &vert; 卓越研发之路:锻造*后端系统

    代码是互联网企业信息化核心,也是众多研发团队智慧的结晶,如何将代码发挥到最大价值?如何用代码快.准.好的实现需求?相信这是很多IT从业者所困扰的问题. MOT南京站首期以『锻造*后端系统』为主题,我 ...