New file |
| | |
| | | // |
| | | // UIView+Layout.m |
| | | // |
| | | // Created by 谭真 on 15/2/24. |
| | | // Copyright © 2015年 谭真. All rights reserved. |
| | | // |
| | | |
| | | #import "UIView+Layout.h" |
| | | |
| | | @implementation UIView (Layout) |
| | | |
| | | - (CGFloat)tz_left { |
| | | return self.frame.origin.x; |
| | | } |
| | | |
| | | - (void)setTz_left:(CGFloat)x { |
| | | CGRect frame = self.frame; |
| | | frame.origin.x = x; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | - (CGFloat)tz_top { |
| | | return self.frame.origin.y; |
| | | } |
| | | |
| | | - (void)setTz_top:(CGFloat)y { |
| | | CGRect frame = self.frame; |
| | | frame.origin.y = y; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | - (CGFloat)tz_right { |
| | | return self.frame.origin.x + self.frame.size.width; |
| | | } |
| | | |
| | | - (void)setTz_right:(CGFloat)right { |
| | | CGRect frame = self.frame; |
| | | frame.origin.x = right - frame.size.width; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | - (CGFloat)tz_bottom { |
| | | return self.frame.origin.y + self.frame.size.height; |
| | | } |
| | | |
| | | - (void)setTz_bottom:(CGFloat)bottom { |
| | | CGRect frame = self.frame; |
| | | frame.origin.y = bottom - frame.size.height; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | - (CGFloat)tz_width { |
| | | return self.frame.size.width; |
| | | } |
| | | |
| | | - (void)setTz_width:(CGFloat)width { |
| | | CGRect frame = self.frame; |
| | | frame.size.width = width; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | - (CGFloat)tz_height { |
| | | return self.frame.size.height; |
| | | } |
| | | |
| | | - (void)setTz_height:(CGFloat)height { |
| | | CGRect frame = self.frame; |
| | | frame.size.height = height; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | - (CGFloat)tz_centerX { |
| | | return self.center.x; |
| | | } |
| | | |
| | | - (void)setTz_centerX:(CGFloat)centerX { |
| | | self.center = CGPointMake(centerX, self.center.y); |
| | | } |
| | | |
| | | - (CGFloat)tz_centerY { |
| | | return self.center.y; |
| | | } |
| | | |
| | | - (void)setTz_centerY:(CGFloat)centerY { |
| | | self.center = CGPointMake(self.center.x, centerY); |
| | | } |
| | | |
| | | - (CGPoint)tz_origin { |
| | | return self.frame.origin; |
| | | } |
| | | |
| | | - (void)setTz_origin:(CGPoint)origin { |
| | | CGRect frame = self.frame; |
| | | frame.origin = origin; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | - (CGSize)tz_size { |
| | | return self.frame.size; |
| | | } |
| | | |
| | | - (void)setTz_size:(CGSize)size { |
| | | CGRect frame = self.frame; |
| | | frame.size = size; |
| | | self.frame = frame; |
| | | } |
| | | |
| | | + (void)showOscillatoryAnimationWithLayer:(CALayer *)layer type:(TZOscillatoryAnimationType)type{ |
| | | NSNumber *animationScale1 = type == TZOscillatoryAnimationToBigger ? @(1.15) : @(0.5); |
| | | NSNumber *animationScale2 = type == TZOscillatoryAnimationToBigger ? @(0.92) : @(1.15); |
| | | |
| | | [UIView animateWithDuration:0.15 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut animations:^{ |
| | | [layer setValue:animationScale1 forKeyPath:@"transform.scale"]; |
| | | } completion:^(BOOL finished) { |
| | | [UIView animateWithDuration:0.15 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut animations:^{ |
| | | [layer setValue:animationScale2 forKeyPath:@"transform.scale"]; |
| | | } completion:^(BOOL finished) { |
| | | [UIView animateWithDuration:0.1 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut animations:^{ |
| | | [layer setValue:@(1.0) forKeyPath:@"transform.scale"]; |
| | | } completion:nil]; |
| | | }]; |
| | | }]; |
| | | } |
| | | |
| | | @end |