它们的定义View

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

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

时间: 2024-10-25 22:40:57

它们的定义View的相关文章

手把手带你画一个 时尚仪表盘 Android 自己定义View

拿到美工效果图.咱们程序猿就得画得一模一样. 为了不被老板喷,仅仅能多练啊. 听说你认为前面几篇都so easy,那今天就带你做个相对照较复杂的. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50468674 注意:每一篇博客都是建立在之前博客的基础知识上的,假设你刚接触自己定义view.能够来说说自己定义view简单学习的方式这里看我曾经的文章.记录了我学习自己定义view的过程,并且前几篇博客或多或少犯了一些错误(反复绘制,o

【Android】自己定义View、画布Canvas与画笔Paint

安卓自己定义View事实上非常easy. 这个View能够像<[Android]利用Java代码布局,button加入点击事件>(点击打开链接)一样.利用Java代码生成一系列的组件. 也能够配合画布Canvas与画笔Paint来使用. 以下用一个样例来说明.例如以下图,有一个自己定义布局View.里面摆放着,利用画布Canvas与画笔Paint绘制出来的蓝色正方形与红色文字. 在res\layout\activity_main.xml中.直接像摆放安卓固有组件一样,能够直接使用这个我定义组件

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

1.自己定义View的属性 2.在View的构造方法中获得我们自己定义的属性 3.重写onMesure 4.重写onDraw 3这个步骤不是必须,当然了大部分情况下还是须要重写的. 1.自己定义View的属性,首先在res/values/  下建立一个attrs.xml , 在里面定义我们的属性和声明我们的整个样式. <?xml version="1.0" encoding="utf-8"?> <resources> <attr nam

Android自己定义View基础篇(三)之SwitchButton开关

自己定义View基础篇(二) 自己定义View基础篇(一) 自己定义View原理 我在解说之前,先来看看效果图,有图有真相:(转换gif图片效果太差) 那来看看真实图片: 假设你要更改样式,请改动例如以下图片: switch_ball switch_bg switch_black switch_bottom 我在这里就不反复解说View与ViewGroup的关系,View的绘制流程.假设你对自己定义View还不甚了解.请看上面几篇文章. 用法 xml文件: <com.github.ws.swit

Android 它们的定义View

安卓开发过程,安卓官方控制有时来自往往不能满足我们的需求.这一次,我必须定义自己.下面我们就来看看他们的定义View: package com.example.myview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style;

Android 开发 -------- 自己定义View 画 五子棋

自己定义View  实现 五子棋 配图: 代码: package com.example.fiveson; import java.util.LinkedList; import java.util.List; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.uti

Android 自己定义View (二) 进阶

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自己定义View之旅.前面已经介绍过一个自己定义View的基础的样例,Android 自己定义View (一),假设你还对自己定义View不了解能够去看看.今天给大家带来一个略微复杂点的样例. 自己定义View显示一张图片,以下包括图片的文本介绍,类似相片介绍什么的,只是不重要,主要是学习自己定义View的使用方法么. 还记得上一篇讲的4个步骤么: 1.自己定

安卓自己定义View进阶-Canvas之绘制基本形状

Canvas之绘制基本形状 作者微博: @GcsSloop [本系列相关文章] 在上一篇自己定义View分类与流程中我们了解自己定义View相关的基本知识,只是,这些东西依然还是理论,并不能拿来(zhuang)用(B), 这一次我们就了解一些能(zhaung)用(B)的东西. 在本篇文章中,我们先了解Canvas的基本用法,最后用一个小演示样例来结束本次教程. 一.Canvas简单介绍 Canvas我们能够称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大. **一般来说

自己定义 View 基础和原理

课程背景: 在 Android 提供的系统控件不能满足需求的情况下,往往须要自己开发自己定义 View 来满足需求,可是该怎样下手呢.本课程将带你进入自己定义 View 的开发过程,来了解它的一些原理. 核心内容: 1.编写自己的自己定义 View 2.增加逻辑线程 3.提取和封装自己定义 View 4.利用 xml 中定义样式来影响显示效果 编写自己的自己定义 View(上) 本课时主要解说最简单的自己定义 View,然后增加绘制元素(文字.图形等),而且能够像使用系统控件一样在布局中使用.