iOS设置frame的简单方法

在iOS中view的frame属性使用地太频繁了,尤其是调UI的时候。我们知道,正常情况下我们无法对frame的某个属性(x,y,width,height等)进行单独修改,比如:
someView.frame.x = 100;

这种方式是不允许的,但实际上我们更经常遇到的是frame的大部分元素值保持不变,只改变其中的一部分。相信这个烦恼困扰了不少人,于是我们不得不用以下两种方法去达到目的:

法1:
CGRect frame = someView.frame;
frame.x =100;
frame.width = 200;
someView.frame = frame;

法2:
someView.frame = CGRectMake(100, XXX, 200, XXX);

法2看起来也很精简,但实际上也很麻烦,因为实际应用场景中x, y, width, height四个值都是依赖别的变量,导致法2的语句非常长。简而言之,以上方法都不够“优雅”。那怎样才算优雅呢?我觉得如果我们能如下这样直接修改某个值就完美了:
someView.x = 100;
someView.width = 200;

我们跳过someView的frame属性,直接修改了我们想要的元素值。幸运的是,我们使用category可以相当方便地达到目的,这是一件一劳永逸的事情,引入一次category后整个工程都可以使用这种修改方法:

UIView+Frame.h
WZLCodeLibrary
Created by wzl on 15/3/23.
Copyright (c) 2015年 Weng-Zilin. All rights reserved.
#import <UIKit/UIKit.h>

@interface UIView (Frame)
@property (nonatomic, assign) CGFloat x;
@property (nonatomic, assign) CGFloat y;
@property (nonatomic, assign) CGFloat width;
@property (nonatomic, assign) CGFloat height;
@property (nonatomic, assign) CGPoint origin;
@property (nonatomic, assign) CGSize size;
@end

UIView+Frame.m
WZLCodeLibrary
#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)setOrigin:(CGPoint)origin
 {
     CGRect frame = self.frame;
     frame.origin = origin;
     self.frame = frame;
 }

- (CGPoint)origin
 {
     return self.frame.origin;
 }

- (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;
 }

- (void)setSize:(CGSize)size
 {
     CGRect frame = self.frame;
     frame.size = size;
     self.frame = frame;
 }

- (CGSize)size
 {
     return self.frame.size;
 } 

 @end
时间: 2024-11-14 12:28:55

iOS设置frame的简单方法的相关文章

IOS设置frame的时候经常要先取出来-&gt; 设置-&gt; 最后再赋值回去,非常麻烦,今天给大家推荐一种非常快捷的方法

大家可以去我的Githup下载   https://github.com/simplyou/YJ-UIIView-/tree/master 在设置尺寸的时候亲们有没有感觉很蛋疼啊,这里提供了一套分类,直接放进工程里,在PCH中包含头文件就能解决你蛋疼的问题; /***********************  .h文件   ******************************** //  UIView+YJ.h //  Created by 闪电 on 14-6-8. //  Copyr

IOS读写Plist文件最简单方法

在网上搜了一圈,发现好多代码 = =小白不想看那么多啊,然后就琢磨了下,原来这么easy ! 1 // 获取PLIST路径 2 NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"]; 3 // 获取PLIST数据 4 NSMutableDictionary *data = [[NSMutableDictionary alloc] initWith

文顶顶 iOS开发UI篇—简单的浏览器查看程序

文顶顶 iOS开发UI篇—简单的浏览器查看程序 iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件的对象,需要添加监听方法 左边按钮 右边按钮 二.实现基本功能的程序 1 // 2 // YYViewController.m 3 // 03-图片浏览器初步 4 // 5 // Created by apple on 14-5-21. 6 // Co

iOS开发UI基础—简单的浏览器查看程序

iOS开发UI基础-简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件的对象,需要添加监听方法 左边按钮 右边按钮 二.实现基本功能的程序 1 // 2 // YYViewController.m 3 // 03-图片浏览器初步 4 // 5 // Created by apple on 14-5-21. 6 // Copyright (c) 2014年 itcas

iOS 常用控件的方法属性总结

一 UIVIew 常见属性1.frame 位置和尺寸(以父控件的左上角为原点(0,0))2.center 中点 (以父控件的左上角为原点(0,0))3.bounds 位置和尺寸(以自己的左上角为原点 (0,0))4.transform 形变属性(缩放,旋转)5.backgroundColor 背景颜色6.tag 标识(父控件可以根据这个标识找到对应的子控件,同一个父控件中的子控件不要一样)7. hidden 设置是否要隐藏8.alpha 透明度(0~1);9.opaque 不透明度(0~1);1

cisco低端交换机IOS升级失败的处理方法

大家都知道,cisco设备IOS升级是很简单的,就只要搭个ftp或tftp服务器,然后在cisco设备上使用 copy tftp:(或ftp:)flash:(高端设备一般为sup-bootdisk:) 就可以了.并且高端设备升级失败后,即使你删除了原有的IOS,也只需要弄一张flash卡,将IOS直接拷至flash卡,然后插至引擎上带的 flash卡插槽,再设置一下IOS文件位置就可以了.但低端设备没有配置flash插槽,此时怎么办呢?可能大家已经想到使用xmodem方式将IOS 文件拷到设备的

iOS开发网络篇—简单介绍ASI框架的使用

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

iOS系统网络抓包方法

在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦.现在终于好了,本文提供两种方式进行网络抓包: 1. 网络共享 + 可视化抓包工具 基本原理 原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具). 现在以MAC系统下Paros工具为例,详细描述下抓包过程: 操作步骤 1)  首先将MAC电脑的以太网共享给airport,使

iOS开发UI篇—简单介绍静态单元格的使用

iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果,有几种方法: (1)可以直接利用代码,返回三组,在判断每组有多少行,展示些什么数据,这样写"死"的代码建议绝不要使用. (2)稍微灵活一些的,可以把plist文件一懒加载的方式,加载到程序中,动态获取.但是观察界面结构,很容易看出这样需要进行模型嵌套,很麻烦. (3)storyboard提