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


UIViewExt.m

#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宽,高,顶部,底部的主要内容,如果未能解决你的问题,请参考以下文章

html设置自适应宽高为啥底部会有大片留白

图片与文本的对齐方式

滚动或重新加载后单元格高度增加

swift UIViewExt.swift

UITableView 比 UIViewController 宽 8 点

vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴