// // Distribution // // Created by YJYH on 16/7/1. // Copyright © 2016年 YJYH. All rights reserved. // #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; } // 设置UIView的X - (void)setViewX:(CGFloat)newX { CGRect viewFrame = [self frame]; viewFrame.origin.x = newX; [self setFrame:viewFrame]; } // 设置UIView的Y - (void)setViewY:(CGFloat)newY { CGRect viewFrame = [self frame]; viewFrame.origin.y = newY; [self setFrame:viewFrame]; } - (CGFloat)centerX { return self.center.x; } - (void)setCenterX:(CGFloat)centerX { self.center = CGPointMake(centerX, self.center.y); } - (CGFloat)centerY { return self.center.y; } - (void)setCenterY:(CGFloat)centerY { self.center = CGPointMake(self.center.x,centerY); } // 设置UIView的Origin - (void)setViewOrigin:(CGPoint)newOrigin { CGRect viewFrame = [self frame]; viewFrame.origin = newOrigin; [self setFrame:viewFrame]; } // 设置UIView的width - (void)setViewWidth:(CGFloat)newWidth { CGRect viewFrame = [self frame]; viewFrame.size.width = newWidth; [self setFrame:viewFrame]; } // 设置UIView的height - (void)setViewHeight:(CGFloat)newHeight { CGRect viewFrame = [self frame]; viewFrame.size.height = newHeight; [self setFrame:viewFrame]; } // 设置UIView的Size - (void)setViewSize:(CGSize)newSize { CGRect viewFrame = [self frame]; viewFrame.size = newSize; [self setFrame:viewFrame]; } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ @end