UIViewExt宽,高,顶部,底部
Posted pengyuan_D
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIViewExt宽,高,顶部,底部相关的知识,希望对你有一定的参考价值。
UIViewExt.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
#import "UIViewExt.h"
CGPoint CGRectGetCenter(CGRect rect)
CGPoint pt; //CGPoint只读属性
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
以上是关于UIViewExt宽,高,顶部,底部的主要内容,如果未能解决你的问题,请参考以下文章