Ios“巷自己的定义View和Android类别似

在.h文件设置了他的一些财产。方法

在.m文件中实现

.h文件

#import <UIKit/UIKit.h>

CGPoint CGRectGetCenter(CGRect rect);

CGRect  CGRectMoveToCenter(CGRect rect,
CGPoint center);

@interface UIView (ViewFrameGeometry)

@property
CGPoint origin;

@property CGSize size;

@property (readonly)
CGPoint bottomLeft;

@property (readonly)
CGPoint bottomRight;

@property (readonly)
CGPoint topRight;

@property
CGFloat height;

@property CGFloat width;

@property CGFloat top;

@property CGFloat left;

@property
CGFloat bottom;

@property CGFloat right;

- (void) moveBy: (CGPoint) delta;

- (void) scaleBy: (CGFloat) scaleFactor;

- (void) fitInSize: (CGSize) aSize;

@end

.m文件

#import "UIViewExt.h"

CGPoint CGRectGetCenter(CGRect rect)

{

CGPoint pt;

pt.x =
CGRectGetMidX(rect);

pt.y =
CGRectGetMidY(rect);

return pt;

}

CGRect CGRectMoveToCenter(CGRect rect,
CGPoint center)

{

CGRect newrect = CGRectZero;

newrect.origin.x = center.x-CGRectGetMidX(rect);

newrect.origin.y = center.y-CGRectGetMidY(rect);

newrect.size = rect.size;

return newrect;

}

@implementation UIView (ViewGeometry)

// Retrieve and set the origin

- (CGPoint) origin

{

return
self.frame.origin;

}

- (void) setOrigin: (CGPoint) aPoint

{

CGRect newframe =
self.frame;

newframe.origin = aPoint;

self.frame = newframe;

}

// Retrieve and set the size

- (CGSize) size

{

return
self.frame.size;

}

- (void) setSize: (CGSize) aSize

{

CGRect newframe =
self.frame;

newframe.size = aSize;

self.frame = newframe;

}

// Query other frame locations

- (CGPoint) bottomRight

{

CGFloat x =
self.frame.origin.x +
self.frame.size.width;

CGFloat y =
self.frame.origin.y +
self.frame.size.height;

return
CGPointMake(x, y);

}

- (CGPoint) bottomLeft

{

CGFloat x =
self.frame.origin.x;

CGFloat y =
self.frame.origin.y +
self.frame.size.height;

return
CGPointMake(x, y);

}

- (CGPoint) topRight

{

CGFloat x =
self.frame.origin.x +
self.frame.size.width;

CGFloat y =
self.frame.origin.y;

return
CGPointMake(x, y);

}

// Retrieve and set height, width, top, bottom, left, right

- (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) top

{

return
self.frame.origin.y;

}

- (void) setTop: (CGFloat) newtop

{

CGRect newframe =
self.frame;

newframe.origin.y = newtop;

self.frame = newframe;

}

- (CGFloat) left

{

return
self.frame.origin.x;

}

- (void) setLeft: (CGFloat) newleft

{

CGRect newframe =
self.frame;

newframe.origin.x = newleft;

self.frame = newframe;

}

- (CGFloat) bottom

{

return
self.frame.origin.y +
self.frame.size.height;

}

- (void) setBottom: (CGFloat) newbottom

{

CGRect newframe =
self.frame;

newframe.origin.y = newbottom -
self.frame.size.height;

self.frame = newframe;

}

- (CGFloat) right

{

return
self.frame.origin.x +
self.frame.size.width;

}

- (void) setRight: (CGFloat) newright

{

CGFloat delta = newright - (self.frame.origin.x +
self.frame.size.width);

CGRect newframe =
self.frame;

newframe.origin.x += delta ;

self.frame = newframe;

}

// Move via offset

- (void) moveBy: (CGPoint) delta

{

CGPoint newcenter =
self.center;

newcenter.x += delta.x;

newcenter.y += delta.y;

self.center = newcenter;

}

// Scaling

- (void) scaleBy: (CGFloat) scaleFactor

{

CGRect newframe =
self.frame;

newframe.size.width *= scaleFactor;

newframe.size.height *= scaleFactor;

self.frame = newframe;

}

// Ensure that both dimensions fit within the given size by scaling down

- (void) fitInSize: (CGSize) aSize

{

CGFloat scale;

CGRect newframe =
self.frame;

if (newframe.size.height && (newframe.size.height > aSize.height))

{

scale = aSize.height / newframe.size.height;

newframe.size.width *= scale;

newframe.size.height *= scale;

}

if (newframe.size.width && (newframe.size.width >= aSize.width))

{

scale = aSize.width / newframe.size.width;

newframe.size.width *= scale;

newframe.size.height *= scale;

}

self.frame = newframe;

}

@end

版权声明:本文博客原创文章。博客,未经同意,不得转载。

它们的定义View的更多相关文章

  1. Android 它们的定义View (一)

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 非常Android入门程序员AndroidView.可能都是比較恐 ...

  2. Android 它们的定义View它BounceProgressBar

    转载请注明出处:http://blog.csdn.net/bbld_/article/details/41246247 [Rocko's blog] 之前几天下载了非常久没用了的桌面版酷狗来用用的时候 ...

  3. Android 自己定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自己定义View之旅.前面已经介绍过一个自己定义View的基础 ...

  4. 【android自己定义控件】自己定义View属性

    1.自己定义View的属性 2.在View的构造方法中获得我们自己定义的属性 3.重写onMesure 4.重写onDraw 3这个步骤不是必须,当然了大部分情况下还是须要重写的. 1.自己定义Vie ...

  5. Qt--自定义View

    这是上一篇文章的续篇,关于自定义View. 多个View内部可以映射到同一个数据模型,也可以映射不同的数据结构:可以使用所有数据,也可以只使用部分数据.因为视图层与数据层的分离,操作相对比较灵活. 1 ...

  6. 自己定义View Controller转换动画

    原文链接 : Introduction to Custom View Controller Transitions and Animations 原文作者 : joyce echessa 译文出自 : ...

  7. Android-自定义View前传-View的三大流程-Layout

    Android-自定义View前传-View的三大流程-Layout 参考 <Android开发艺术探索> https://github.com/hongyangAndroid/FlowL ...

  8. 图文剖析自己定义View的绘制(以自己定义滑动button为例)

    自己定义View一直是横在Android开发人员面前的一道坎. 一.View和ViewGroup的关系 从View和ViewGroup的关系来看.ViewGroup继承View. View的子类.多是 ...

  9. 自己定义View Layout过程 - 最易懂的自己定义View原理系列(3)

    前言 自己定义View是Android开发人员必须了解的基础 网上有大量关于自己定义View原理的文章.但存在一些问题:内容不全.思路不清晰.无源代码分析.简单问题复杂化等等 今天,我将全面总结自己定 ...

随机推荐

  1. 用composer安装 Laravel | Laravel需要的环境配置

    一:安装 参考网站 http://v4.golaravel.com/docs/4.2/installation 1.先确保安装好了PHP,和服务器环境 2.然后下载composer可执行文件到当前目录 ...

  2. linux小命令

    本文主要记录了我在工作中用到的一些linux命令 1.查询linux系统是32位还是64位 zhaolei@zhaolei :~# file /usr/bin/whoami/usr/bin/whoam ...

  3. 链接分析算法之:主题敏感PageRank

    链接分析算法之:主题敏感PageRank     前面的讨论提到.PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别.例如,当搜索“苹果”时,一个数码爱好 ...

  4. dpkg卸载和安装deb

    今天在linux mint上安装个东西,没有安装完全,但是启动的时候能够启动,为了防止以后出现异常,想把它卸载了,在软件上点卸载,没有反应, 如下图: 没有指定卸载的包源,无奈使用sudo apt-g ...

  5. Linux怎么设置PostgreSQL远程访问

    原文链接: Linux怎么设置PostgreSQL远程访问 安装PostgreSQL数据库之后,默认是只接受本地访问连接.如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置. ...

  6. [转]apache的源码安装详细过程全纪录

    原文链接:http://www.jb51.net/article/59474.htm 文中  开机启动需要修改 而且特别麻烦 还的配置php   否则不认识php文件  郁闷!只能做参考了!

  7. 使用MongoDB的开源项目(转)

    根据谷歌的搜索结果筛选出来的. 统计应用 counlty https://count.ly/ mongopress 开源CMS系统 http://www.mongopress.org/ Rubedo ...

  8. 基于visual Studio2013解决算法导论之047赫夫曼编码

     题目 赫夫曼编码 解决代码及点评 // 赫夫曼编码.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <stdio.h ...

  9. 基于visual Studio2013解决C语言竞赛题之0519最大值

     题目

  10. objective-C 初识

    objective-C objective-c 是c语言的改进版 一.方法的定义: 格式: -/+(返回值类型)方法名:(参数类型) 参数名 [方法名] : (参数类型) 参数名......... 例 ...