iOS开发-UIView扩展CGRect

简介:

关于UIView的位置都会遇到,一般需要改变UIView的位置,需要先获取原有的frame位置,然后在frame上面修改,有的时候如果只是改变了一下垂直方向的位置,宽度和高度的一种,这种写法很麻烦。下面两种写法第二种明显更简单,如果需要实现第二种方法就需要扩展UIView。

1
2
3
4
5
6
7
8
//1
CGRect frame=self.testView.frame;
frame.size.width=120;
self.testView.frame=frame;
[self printFrame];
//2
self.testView.width=120;
[self printFrame];

扩展定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@ interface  UIView (ReSize)
 
@property (nonatomic, assign) CGSize size;
 
@property (nonatomic,assign)  CGFloat x;
 
@property  (nonatomic,assign) CGFloat y;
 
@property (nonatomic, assign) CGFloat top;
 
@property (nonatomic, assign) CGFloat bottom;
 
@property (nonatomic, assign) CGFloat left;
 
@property (nonatomic, assign) CGFloat right;
 
@property (nonatomic, assign) CGFloat centerX;
 
@property (nonatomic, assign) CGFloat centerY;
 
@property (nonatomic, assign) CGFloat width;
 
@property (nonatomic, assign) CGFloat height;
 
@end

 扩展实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
@implementation UIView (ReSize)
 
- (CGSize)size;
{
     return  [self frame].size;
}
 
- ( void )setSize:(CGSize)size;
{
     CGPoint origin = [self frame].origin;
     [self setFrame:CGRectMake(origin.x, origin.y, size.width, size.height)];
}
 
-(CGFloat)x{
     CGRect frame=[self frame];
     return  frame.origin.x;
}
 
-( void )setX:(CGFloat)x{
     CGRect frame=[self frame];
     frame.origin.x=x;
     [self setFrame:frame];
}
 
-(CGFloat)y{
     CGRect frame=[self frame];
     return  frame.origin.y;
}
 
-( void )setY:(CGFloat)y{
     CGRect frame=[self frame];
     frame.origin.y=y;
     return  [self setFrame:frame];
}
 
- (CGFloat)left;
{
     return  CGRectGetMinX([self frame]);
}
 
- ( void )setLeft:(CGFloat)x;
{
     CGRect frame = [self frame];
     frame.origin.x = x;
     [self setFrame:frame];
}
 
- (CGFloat)top;
{
     return  CGRectGetMinY([self frame]);
}
 
- ( void )setTop:(CGFloat)y;
{
     CGRect frame = [self frame];
     frame.origin.y = y;
     [self setFrame:frame];
}
 
- (CGFloat)right;
{
     return  CGRectGetMaxX([self frame]);
}
 
- ( void )setRight:(CGFloat)right;
{
     CGRect frame = [self frame];
     frame.origin.x = right - frame.size.width;
     
     [self setFrame:frame];
}
 
- (CGFloat)bottom;
{
     return  CGRectGetMaxY([self frame]);
}
 
- ( void )setBottom:(CGFloat)bottom;
{
     CGRect frame = [self frame];
     frame.origin.y = bottom - frame.size.height;
     [self setFrame:frame];
}
 
- (CGFloat)centerX;
{
     return  [self center].x;
}
 
- ( void )setCenterX:(CGFloat)centerX;
{
     [self setCenter:CGPointMake(centerX, self.center.y)];
}
 
- (CGFloat)centerY;
{
     return  [self center].y;
}
 
- ( void )setCenterY:(CGFloat)centerY;
{
     [self setCenter:CGPointMake(self.center.x, centerY)];
}
 
- (CGFloat)width;
{
     return  CGRectGetWidth([self frame]);
}
 
- ( void )setWidth:(CGFloat)width;
{
     CGRect frame = [self frame];
     frame.size.width = width;
     [self setFrame:CGRectStandardize(frame)];
}
 
- (CGFloat)height;
{
     return  CGRectGetHeight([self frame]);
}
 
- ( void )setHeight:(CGFloat)height;
{
     CGRect frame=[self frame];
     frame.size.height = height;
     [self setFrame:CGRectStandardize(frame)];
}
 
@end

项目源代码地址:https://github.com/SmallElephant/iOS-FEViewReSize

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/5119677.html,如需转载请自行联系原作者


相关文章
|
23小时前
|
iOS开发 开发者 UED
探索iOS开发中的SwiftUI框架
在移动应用开发的广阔天地中,苹果公司的SwiftUI框架以其声明式语法和直观布局管理,为iOS开发者带来了新的生产力工具。本文将深入探讨SwiftUI的设计哲学、核心概念以及在实际项目中如何高效运用该框架,旨在为读者提供一份全面的SwiftUI使用指南。
|
1天前
|
API Swift iOS开发
探索iOS开发中的SwiftUI框架
【6月更文挑战第11天】本文将深入探讨iOS开发中的一个重要工具——SwiftUI框架。我们将了解其基本概念,如何在实际项目中应用,以及它如何改变iOS应用的开发方式。
|
1天前
|
编解码 安全 Android开发
探索iOS与Android开发的差异:从界面到性能
【6月更文挑战第10天】在移动应用开发的广阔天地中,iOS和Android两大平台各占山头,它们在设计理念、用户体验、性能优化等方面展现出独特的魅力。本文将深入探讨这两大系统在开发过程中的主要差异,从用户界面设计到性能调优,揭示各自背后的技术逻辑与创新策略,为开发者提供全面的视角和实用的开发指南。
|
2天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异性
【6月更文挑战第9天】本文深入探讨了安卓和iOS这两大主流移动操作系统在应用程序开发方面的关键差异。从编程语言、用户界面设计到市场策略,我们将逐一分析这些差异如何影响开发者的选择和最终产品的用户体验。通过比较,我们旨在为开发者提供一份实用的指南,帮助他们在这两个平台上做出更明智的开发决策。
|
3天前
|
前端开发 搜索推荐 iOS开发
探索iOS开发的新纪元:SwiftUI的革命性影响
【6月更文挑战第8天】随着苹果公司推出SwiftUI,iOS开发领域迎来了一场创新风暴。本文将深入探讨SwiftUI如何简化界面构建流程,提升开发者效率,并分析其对现有开发模式的颠覆性影响。我们将通过具体案例,展示SwiftUI在实际开发中的应用和优势。
|
4天前
|
开发框架 开发工具 Swift
探索iOS开发的未来:SwiftUI的革命性影响
【6月更文挑战第7天】随着苹果公司不断推进其软件开发工具,SwiftUI作为一个全新的用户界面构建框架,正在重塑iOS应用开发的面貌。本文将深入探讨SwiftUI如何简化设计过程,提升开发效率,并预测其对iOS生态系统的长远影响。
|
5天前
|
人工智能 vr&ar 数据安全/隐私保护
探索iOS开发的未来趋势
【6月更文挑战第7天】本文将深入探讨iOS开发的未来发展,包括SwiftUI的崛起、AR/VR技术的融合、人工智能的集成以及隐私保护的重要性。我们还将讨论这些趋势如何影响开发者的工作方式和用户体验。
|
5天前
|
Java Android开发 Swift
探索安卓与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的浩瀚宇宙中,安卓和iOS这两大星系以其独特的引力影响着开发者的航向。本文将穿梭于这两个平台的开发环境、编程语言、用户界面设计、性能优化以及市场分布等方面,揭示它们之间的核心差异。我们将通过比较分析,为开发者提供决策时的参考坐标,帮助他们根据项目需求和目标受众选择合适的平台。加入我们,一起揭开安卓与iOS开发的神秘面纱,探索它们如何塑造移动应用的未来。
|
9天前
|
iOS开发 人工智能 UED
探索iOS开发的未来趋势
本文将深入探讨iOS开发的当前状况以及未来可能的发展方向。我们将从技术、市场和用户体验三个角度进行分析,以期对iOS开发者提供有价值的参考。
|
12天前
|
机器学习/深度学习 人工智能 数据安全/隐私保护
探索iOS开发的未来趋势
【5月更文挑战第31天】本文深入探讨了iOS开发领域的最新动态与未来展望。随着技术的不断进步,iOS开发者面临着前所未有的机遇与挑战。文章将分析当前iOS开发的关键技术点,并预测未来的发展方向,为开发者提供宝贵的参考信息。