您的位置:首页 > 产品设计 > UI/UE

iOS开发-很有用的UIView分类

2018-01-17 15:22 393 查看
很有用的UIView分类,可以用来方便访问视图坐标X,Y,中心点,宽度和高度等等

UIView+Category.h

1 #import <UIKit/UIKit.h>
2
3 IB_DESIGNABLE
4
5 @interface UIView (Category)
6 @property (nonatomic, assign)CGFloat x;
7 @property (nonatomic, assign)CGFloat y;
8 @property (nonatomic, assign)CGFloat width;
9 @property (nonatomic, assign)CGFloat height;
10 @property (nonatomic, assign)CGFloat centerX;
11 @property (nonatomic, assign)CGFloat centerY;
12 @property (nonatomic, assign)CGSize size;
13 @property(nonatomic, assign) IBInspectable CGFloat borderWidth;
14 @property(nonatomic, assign) IBInspectable UIColor *borderColor;
15 @property(nonatomic, assign) IBInspectable CGFloat cornerRadius;
16
17 /**
18  *  水平居中
19  */
20 - (void)alignHorizontal;
21 /**
22  *  垂直居中
23  */
24 - (void)alignVertical;
25 /**
26  *  判断是否显示在主窗口上面
27  *
28  *  @return 是否
29  */
30 - (BOOL)isShowOnWindow;
31
32 - (UIViewController *)parentController;
33 @end


UIView+Category.m

1 #import "UIView+Category.h"
2
3 @implementation UIView (Category)
4
5 - (void)setX:(CGFloat)x
6 {
7     CGRect frame = self.frame;
8     frame.origin.x = x;
9     self.frame = frame;
10 }
11
12 - (CGFloat)x
13 {
14     return self.frame.origin.x;
15 }
16
17 - (void)setY:(CGFloat)y
18 {
19     CGRect frame = self.frame;
20     frame.origin.y = y;
21     self.frame = frame;
22 }
23
24 - (CGFloat)y
25 {
26     return self.frame.origin.y;
27 }
28
29 - (void)setWidth:(CGFloat)width
30 {
31     CGRect frame = self.frame;
32     frame.size.width = width;
33     self.frame = frame;
34 }
35
36 - (CGFloat)width
37 {
38     return self.frame.size.width;
39 }
40
41 - (void)setHeight:(CGFloat)height
42 {
43     CGRect frame = self.frame;
44     frame.size.height = height;
45     self.frame= frame;
46 }
47
48 - (CGFloat)height
49 {
50     return self.frame.size.height;
51 }
52
53 - (void)setSize:(CGSize)size
54 {
55     CGRect frame = self.frame;
56     frame.size = size;
57     self.frame = frame;
58 }
59
60 - (CGSize)size
61 {
62     return self.frame.size;
63 }
64
65 - (void)setCenterX:(CGFloat)centerX
66 {
67     CGPoint center = self.center;
68     center.x = centerX;
69     self.center = center;
70 }
71
72 - (CGFloat)centerX
73 {
74     return self.center.x;
75 }
76
77 - (void)setCenterY:(CGFloat)centerY
78 {
79     CGPoint center = self.center;
80     center.y = centerY;
81     self.center = center;
82 }
83
84 - (CGFloat)centerY
85 {
86     return self.center.y;
87 }
88 - (void)alignHorizontal
89 {
90     self.x = (self.superview.width - self.width) * 0.5;
91 }
92
93 - (void)alignVertical
94 {
95     self.y = (self.superview.height - self.height) *0.5;
96 }
97
98 - (void)setBorderWidth:(CGFloat)borderWidth
99 {
100
101     if (borderWidth < 0) {
102         return;
103     }
104     self.layer.borderWidth = borderWidth;
105 }
106
107 - (void)setBorderColor:(UIColor *)borderColor
108 {
109     self.layer.borderColor = borderColor.CGColor;
110 }
111
112 - (void)setCornerRadius:(CGFloat)cornerRadius
113 {
114     self.layer.cornerRadius = cornerRadius;
115     self.layer.masksToBounds = YES;
116 }
117
118 - (BOOL)isShowOnWindow
119 {
120     //主窗口
121     UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
122
123     //相对于父控件转换之后的rect
124     CGRect newRect = [keyWindow convertRect:self.frame fromView:self.superview];
125     //主窗口的bounds
126     CGRect winBounds = keyWindow.bounds;
127     //判断两个坐标系是否有交汇的地方,返回bool值
128     BOOL isIntersects =  CGRectIntersectsRect(newRect, winBounds);
129     if (self.hidden != YES && self.alpha >0.01 && self.window == keyWindow && isIntersects) {
130         return YES;
131     }else{
132         return NO;
133     }
134 }
135
136 - (CGFloat)borderWidth
137 {
138     return self.borderWidth;
139 }
140
141 - (UIColor *)borderColor
142 {
143     return self.borderColor;
144
145 }
146
147 - (CGFloat)cornerRadius
148 {
149     return self.cornerRadius;
150 }
151
152 - (UIViewController *)parentController
153 {
154     UIResponder *responder = [self nextResponder];
155     while (responder) {
156         if ([responder isKindOfClass:[UIViewController class]]) {
157             return (UIViewController *)responder;
158         }
159         responder = [responder nextResponder];
160     }
161     return nil;
162 }
163
164
165 @end


 原文链接:http://www.cnblogs.com/guitarandcode/p/5758995.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UIView Category 分类