//
// FrameAccessor.h
// FrameAccessor
//
// Created by Alex Denisov on 18.03.12.
// Copyright (c) 2013 okolodev.org. All rights reserved.
// #if (TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE)
#import <UIKit/UIKit.h>
#define View UIView
#else
#import <Foundation/Foundation.h>
#define View NSView
#endif @interface UIView (FrameAccessor) - (CGPoint)origin;
- (void)setOrigin:(CGPoint)newOrigin;
- (CGSize)size;
- (void)setSize:(CGSize)newSize; - (CGFloat)x;
- (void)setX:(CGFloat)newX;
- (CGFloat)y;
- (void)setY:(CGFloat)newY; - (CGFloat)height;
- (void)setHeight:(CGFloat)newHeight;
- (CGFloat)width;
- (void)setWidth:(CGFloat)newWidth; - (CGFloat)bottom;
- (CGFloat)right; @end
//  FrameAccessor.m
// FrameAccessor
//
// Created by Alex Denisov on 18.03.12.
// Copyright (c) 2013 okolodev.org. All rights reserved.
// #import "FrameAccessor.h" @implementation UIView (FrameAccessor) - (CGPoint)origin {
return self.frame.origin;
} - (void)setOrigin:(CGPoint)newOrigin {
CGRect newFrame = self.frame;
newFrame.origin = newOrigin;
self.frame = newFrame;
} - (CGSize)size {
return self.frame.size;
} - (void)setSize:(CGSize)newSize {
CGRect newFrame = self.frame;
newFrame.size = newSize;
self.frame = newFrame;
} - (CGFloat)x {
return self.frame.origin.x;
} - (void)setX:(CGFloat)newX {
CGRect newFrame = self.frame;
newFrame.origin.x = newX;
self.frame = newFrame;
} - (CGFloat)y {
return self.frame.origin.y;
} - (void)setY:(CGFloat)newY {
CGRect newFrame = self.frame;
newFrame.origin.y = newY;
self.frame = newFrame;
} - (CGFloat)height {
return self.frame.size.height;
} - (void)setHeight:(CGFloat)newHeight {
CGRect newFrame = self.frame;
newFrame.size.height = newHeight;
self.frame = newFrame;
} - (CGFloat)width {
return self.frame.size.width;
} - (void)setWidth:(CGFloat)newWidth {
CGRect newFrame = self.frame;
newFrame.size.width = newWidth;
self.frame = newFrame;
} - (CGFloat)bottom {
return self.frame.origin.y + self.frame.size.height;
} - (CGFloat)right {
return self.frame.origin.x + self.frame.size.width;
} @end

一个实用的UIView的类别的更多相关文章

  1. “makefile”写法详解,一步一步写一个实用的makefile,详解 sed 's,$∗\.o[ :]*,\1.o $@ : ,g' < $@.

    目的:编写一个实用的makefile,能自动编译当前目录下所有.c/.cpp源文件,支持二者混合编译.并且当某个.c/.cpp..h或依赖的源文件被修改后,仅重编涉及到的源文件,未涉及的不编译. 二要 ...

  2. "一个实用的却被忽略的命名空间:Microsoft.VisualBasic":

        当你看到这个命名空间的时候,别因为是vb的东西就匆忙关掉网页,那将会是您的损失,此命名空间中的资源最初目的是为了简化vb.net开发而创建的,所以microsoft.visualbasic并不 ...

  3. 构建一个基于UIView的类别

    很多时候,如果我们想给我们的控件赋值,例如给控件的长度.宽度等赋值,很麻烦 需要先获取到当前frame,再整个临时frame来保存,修改赋值后再还给当前的frame,这都是重复性高的苦力活,解决方法就 ...

  4. 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之三

    原文:Getting Started with Sencha Touch 2: Build a Weather Utility App (Part 3) 作者:Lee BoonstraLee is a ...

  5. asp.net core C#设计一个实用的线程池

    菜菜呀,我最近研究技术呢,发现线上一个任务程序线程数有点多呀 CEO,CTO,CFO于一身的CXO x总,你学编程呢? 菜菜 作为公司总负责人,我以后还要管理技术部门呢,怎么能不会技术呢 CEO,CT ...

  6. 一个实用批处理指令制作过程分享:Perforce更新完后打开VisualStudio再编译

    需求来源 笔者从事Unreal游戏客户端工作,使用VisualStudio开发,然后经常干一个事:就是使用Perforce(或svn)拉取最新代码,(一些时间后)拉取完之后然后打开 项目.sln,即V ...

  7. 推荐一个实用的css工具

    后台程序员整天在和数据打交道,天天的活就是抱着mysql抠数据,如果让他去写网站的样式,就让人感觉力不从心,所以推荐一个twitter的团队开发的东西,几乎囊括了网站所需的样式,http://www. ...

  8. [原创作品]一个实用的js倒计时器 postby:zhutty.cnblogs.com

    今天做了一个手机短信发送倒计时,额,就是每隔多长时间可以重新发送的功能.贡献出来给园有吐槽点评. //倒计时,time:时长(秒),scb:每秒回调,cb:计时完成回调 var timing = fu ...

  9. JavaScript封装一个实用的select控件

    最近一直把精力放在项目上面,导致忽略的一些底层的东西.以前就一直觉得原有的select控件很丑,正好周末有时间,试着做了一个简单封装,实现了它的基本功能.我总结了一下,大概分为三个部分: 1.对显示样 ...

随机推荐

  1. 49道Spring面试题和答案

    49道Spring面试题和答案 Spring 概述 1. 什么是spring? Spring 是个Java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE ...

  2. jenkins异常解答

    1.安装插件时offline 需要更换插件管理中的升级URL   http://mirror.xmission.com/jenkins/updates/current/update-center.js ...

  3. 团伙(codevs 2597)

    题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...

  4. ElasticSearch中Date

    ElasticSearch中有时会想要通过索引日期来筛选查询的数据,此时就需要用到日期数学表达式. 比如现在的时间是2024年3月22日中午12点.utc 注意,如果是中国的时间需要加上8个小时! 表 ...

  5. Phantomjs和Casperjs,后台网页抓取和交互

    var casper = require('casper').create({ verbose: true, logLevel: 'debug', pageSettings: { loadImages ...

  6. 创建一个简单的 http 服务器

    创建一个简单的 http 服务器 直接在 目录下运行 当前的目录即可是root 目录 默认端口8000 应该可以加参数修改端口号 Python2 python -m SimpleHTTPServer ...

  7. Linux/UNIX之文件和文件夹(2)

    文件和文件夹(2) link.ulink.remove和rename函数 #include <unistd.h> int link(const char *oldpath, const c ...

  8. flex 操作xml 实现增删改查 .

    一 在介绍Flex中操作XML之前,首先简单介绍下XML中的基本术语. 元素:XML中拥有开始标签和结束标签的这一块称为“元素”    节点:把XML元素与文本结合起来统称为节点    根节点:位于整 ...

  9. Effective C++ 条款八 别让异常逃离析构函数

    class DBConn //这个class用来管理DBConnction对象 { public:   //自己设计一个新的DBConn接口 方法3 void close() { db.close() ...

  10. 多线程网页爬虫 python 实现

    采用了多线程和锁机制,实现了广度优先算法的网页爬虫. 对于一个网络爬虫,如果要按广度遍历的方式下载,它就是这样干活的:         1.从给定的入口网址把第一个网页下载下来         2.从 ...