在OC中直接修改frame结构体的某项属性
来源:互联网 发布:php 微信网页授权代码 编辑:程序博客网 时间:2024/06/11 12:01
frame属性对于每一个iOS开发者来说都不是陌生的,在开发中经常需要修改某个控件的位置和大小,但frame是结构体,我们是不能直接修改结构体里面的值.我们需要三个步骤才能修改一个frame,也就是大家常说的三部曲
CGRect frame = self.btn.frame; frame.size.height += 20; self.btn.frame = frame;
感觉非常麻烦,如果要修改的属性很多,会浪费非常多的时间.下面我来教大家一个非常爽的方法,可以直接修改属性,就像下面一样
self.btn.height += 20;
其实只要自己给UIView写个分类就好了,在分类中定义一些属性就可以了.
分类UIView+Frame 声明
#import <UIKit/UIKit.h>@interface UIView (Frame)// 自动生成get,set方法的声明,在分类里面用@property不会帮你自动生成带下划线的成员属性@property (nonatomic, assign) CGFloat x;@property (nonatomic, assign) CGFloat y;@property (nonatomic, assign) CGFloat width;@property (nonatomic, assign) CGFloat height;@end
分类UIView+Frame 实现
#import "UIView+Frame.h"@implementation UIView (Frame)- (void)setX:(CGFloat)x{ CGRect frame = self.frame; frame.origin.x = x; self.frame = frame;}- (CGFloat)x{ return self.frame.origin.x;}- (void)setY:(CGFloat)y{ CGRect frame = self.frame; frame.origin.y = y; self.frame = frame;}- (CGFloat)y{ return self.frame.origin.y;}- (void)setWidth:(CGFloat)width{ CGRect frame = self.frame; frame.size.width = width; self.frame = frame;}- (CGFloat)width{ return self.frame.size.width;}- (void)setHeight:(CGFloat)height{ CGRect frame = self.frame; frame.size.height = height; self.frame = frame;}- (CGFloat)height{ return self.frame.size.height;}@end
建好分类之后,以后需要用到的时候,把两个文件拖到工程里面,然后导入头文件,就可以用了
0 0
- 在OC中直接修改frame结构体的某项属性
- 让结构体类型frame的某个属性可以直接修改
- iOS-让结构体类型frame的属性可以直接修改
- OC中修改 对象的结构体属性
- Expression is not assignable (OC为什么不能直接修改结构体属性)!
- iOS:一种直接修改frame的某个属性的方法
- 在oc中如何修改控件的一些只读属性
- 不允许直接修改对象的结构体属性的成员
- Objective-C 【OC语法:不能修改 某个对象的 结构体属性的 成员】
- swift可以直接修改控件的frame
- OC 结构体作为对象的属性
- 【iOS开发-40】不能直接修改对象的结构体属性的成员,那怎么办?
- js中动态修改frame的src属性,frame自己刷新。。。
- 当我把一个"结构体"在类中当做属性后, 在实用中可以直接读取结构体成员, 但不能直接写入.
- OC-UI-002.按钮的属性frame、bounds、center
- OC中常用的结构体
- 在oc语言中对象对象属性的封装
- 在frame结构的页面中,如何实现用struts2跳转时,只改变页面中的某个frame
- android中文api
- java开发中为什么使用多线程
- 使用CGIC实现Web文件上传的服务端代码
- CentOS yum安装Apache + PHP + Tomcat7 + MySQL
- YUM安装RPM安装包时报错Could not open/read file:///mnt/repodata/repomd.xml
- 在OC中直接修改frame结构体的某项属性
- 来自Chuck Jazdzewski慈父般的忠告
- onclick="return true;"以后表单照样提交
- java中的类
- C#学习笔记——NCalc包中的运算表达式
- 查找连续的数据2
- Python-安装httplib2模块
- UISearchBar UISearchDisplayController
- HTML中引号多层嵌套的问题