// // UIView+Category.m // ALand // // Created by Z on 16/3/22. // Copyright © 2016年 Z. All rights reserved. // #import "UIView+Category.h" @implementation UIView (Category) + (id)viewWithNibName:(NSString *)viewName { NSArray *nibView = [[NSBundle mainBundle] loadNibNamed:viewName owner:nil options:nil]; return [nibView objectAtIndex:0]; } + (id)viewFromNib { NSString *className = NSStringFromClass([self class]); NSArray *nibView = [[NSBundle mainBundle] loadNibNamed:className owner:nil options:nil]; return [nibView objectAtIndex:0]; } - (UIViewController *)viewController { for (UIView *next = [self superview]; next; next = next.superview) { UIResponder *nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return (UIViewController *)nextResponder; } } return nil; } /** * 控制底部弹出动画 * * @param constraint 视图底部到父视图底部的距离约束 * @param toBottom 视图底部到父视图底部的距离 */ - (void)constraint:(NSLayoutConstraint *)constraint toBottom:(NSInteger)toBottom { HIDE_KEYBOARD; constraint.constant = toBottom; WS(weakSelf); [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.7 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ weakSelf.bottom = toBottom; [weakSelf layoutIfNeeded]; } completion:nil]; } - (void)setCornerRadius:(CGFloat)cornerRadius { self.layer.cornerRadius = cornerRadius; } - (CGFloat)cornerRadius { return self.layer.cornerRadius; } @dynamic top; @dynamic bottom; @dynamic left; @dynamic right; @dynamic width; @dynamic height; @dynamic offset; @dynamic position; @dynamic size; @dynamic x; @dynamic y; @dynamic w; @dynamic h; - (CGFloat)top { return self.frame.origin.y; } - (void)setTop:(CGFloat)top { CGRect frame = self.frame; frame.origin.y = top; self.frame = frame; } - (CGFloat)left { return self.frame.origin.x; } - (void)setLeft:(CGFloat)left { CGRect frame = self.frame; frame.origin.x = left; self.frame = frame; } - (CGFloat)width { return self.frame.size.width; } - (void)setWidth:(CGFloat)width { CGRect frame = self.frame; frame.size.width = width; self.frame = frame; } - (CGFloat)height { return self.frame.size.height; } - (void)setHeight:(CGFloat)height { CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } - (CGFloat)bottom { return self.frame.size.height + self.frame.origin.y; } - (void)setBottom:(CGFloat)bottom { CGRect frame = self.frame; frame.origin.y = bottom - frame.size.height; self.frame = frame; } - (CGFloat)right { return self.frame.size.width + self.frame.origin.x; } - (void)setRight:(CGFloat)right { CGRect frame = self.frame; frame.origin.x = right - frame.size.width; self.frame = frame; } - (CGFloat)x { return self.frame.origin.x; } - (void)setX:(CGFloat)value { CGRect frame = self.frame; frame.origin.x = value; self.frame = frame; } - (CGFloat)y { return self.frame.origin.y; } - (void)setY:(CGFloat)value { CGRect frame = self.frame; frame.origin.y = value; self.frame = frame; } - (CGFloat)w { return self.frame.size.width; } - (void)setW:(CGFloat)width { CGRect frame = self.frame; frame.size.width = width; self.frame = frame; } - (CGFloat)h { return self.frame.size.height; } - (void)setH:(CGFloat)height { CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } - (CGPoint)offset { CGPoint point = CGPointZero; UIView *view = self; while (view) { point.x += view.frame.origin.x; point.y += view.frame.origin.y; view = view.superview; } return point; } - (void)setOffset:(CGPoint)offset { UIView *view = self; if (nil == view) return; CGPoint point = offset; while (view) { point.x += view.superview.frame.origin.x; point.y += view.superview.frame.origin.y; view = view.superview; } CGRect frame = self.frame; frame.origin = point; self.frame = frame; } - (CGPoint)position { return self.frame.origin; } - (void)setPosition:(CGPoint)pos { CGRect frame = self.frame; frame.origin = pos; self.frame = frame; } - (CGSize)size { return self.frame.size; } - (void)setSize:(CGSize)size { CGRect frame = self.frame; frame.size = size; self.frame = frame; } - (CGFloat)centerX { return self.center.x; } - (void)setCenterX:(CGFloat)centerX { CGPoint center = self.center; center.x = centerX; self.center = center; } - (CGFloat)centerY { return self.center.y; } - (void)setCenterY:(CGFloat)centerY { CGPoint center = self.center; center.y = centerY; self.center = center; } - (CGPoint)origin { return self.frame.origin; } - (void)setOrigin:(CGPoint)origin { CGRect frame = self.frame; frame.origin = origin; self.frame = frame; } - (CGPoint)boundsCenter { return CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); } @end