Skip to content

Commit 553917f

Browse files
author
@欧柏泉
committed
修正评估函数的BUG,以及添加屏幕尺寸缩放计算工具类。
1 parent 8cd4a9c commit 553917f

10 files changed

+121
-3
lines changed

MyLayout.podspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
1616
#
1717

1818
s.name = "MyLayout"
19-
s.version = "1.1.3"
19+
s.version = "1.1.4"
2020
s.summary = "A powerful iOS view layout library, suitable for all kinds of screen size. Don't need to learn AutoLayout and SizeClass. "
2121

2222
s.description = <<-DESC
@@ -79,7 +79,7 @@ Pod::Spec.new do |s|
7979
# Supports git, hg, bzr, svn and HTTP.
8080
#
8181

82-
s.source = { :git => "https://github.com/youngsoft/MyLinearLayout.git", :tag => "1.1.3" }
82+
s.source = { :git => "https://github.com/youngsoft/MyLinearLayout.git", :tag => "1.1.4" }
8383

8484

8585
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #

MyLayout.xcodeproj/project.pbxproj

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
18014BA51C9079DA0088133B /* MyDimeScale.m in Sources */ = {isa = PBXBuildFile; fileRef = 18014BA41C9079DA0088133B /* MyDimeScale.m */; };
1011
188261CF1C647CB300996C2C /* AllTest6ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 188261CE1C647CB300996C2C /* AllTest6ViewController.m */; };
1112
1890A22F1C6DD71600373B8B /* FLLTest2ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1890A22D1C6DD71600373B8B /* FLLTest2ViewController.m */; };
1213
1890A2301C6DD71600373B8B /* FLLTest2ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1890A22E1C6DD71600373B8B /* FLLTest2ViewController.xib */; };
@@ -61,6 +62,8 @@
6162
/* End PBXContainerItemProxy section */
6263

6364
/* Begin PBXFileReference section */
65+
18014BA31C9079DA0088133B /* MyDimeScale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyDimeScale.h; sourceTree = "<group>"; };
66+
18014BA41C9079DA0088133B /* MyDimeScale.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyDimeScale.m; sourceTree = "<group>"; };
6467
1840828D1B2C46E8003F378B /* MyLayout.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MyLayout.app; sourceTree = BUILT_PRODUCTS_DIR; };
6568
184082A61B2C46E8003F378B /* MyLayout.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MyLayout.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
6669
188261CD1C647CB300996C2C /* AllTest6ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllTest6ViewController.h; sourceTree = "<group>"; };
@@ -273,6 +276,8 @@
273276
46D45B151C525FC400A8362C /* MyLayoutSizeClass.m */,
274277
18D684081C4F421400A48BB4 /* MyLayoutMeasure.h */,
275278
18D684091C4F421400A48BB4 /* MyLayoutMeasure.m */,
279+
18014BA31C9079DA0088133B /* MyDimeScale.h */,
280+
18014BA41C9079DA0088133B /* MyDimeScale.m */,
276281
18D6840F1C4F421400A48BB4 /* MyMaker.h */,
277282
18D684101C4F421400A48BB4 /* MyMaker.m */,
278283
);
@@ -424,6 +429,7 @@
424429
18D684411C4F421400A48BB4 /* MyLinearLayout.m in Sources */,
425430
18D6844A1C4F421400A48BB4 /* LLTest6ViewController.m in Sources */,
426431
18D684341C4F421400A48BB4 /* AppDelegate.m in Sources */,
432+
18014BA51C9079DA0088133B /* MyDimeScale.m in Sources */,
427433
18D684381C4F421400A48BB4 /* FLTest2ViewController.m in Sources */,
428434
18D6844D1C4F421400A48BB4 /* RLTest1ViewController.m in Sources */,
429435
18D684501C4F421400A48BB4 /* TLTest1ViewController.m in Sources */,

MyLayout/Lib/MyBaseLayout.h

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
@property(nonatomic, assign) IBInspectable CGFloat myTopMargin;
5454
@property(nonatomic, assign) IBInspectable CGFloat myRightMargin;
5555
@property(nonatomic, assign) IBInspectable CGFloat myBottomMargin;
56+
@property(nonatomic, assign) IBInspectable CGFloat myMargin; //前面四个简易设置。
5657

5758
//如果您要使用下面的方法请定义MY_USEOLDMETHODDEF这个宏,如果想用老的方法不告警则定义MY_USEOLDMETHODNOWARNING这个宏
5859
#ifdef MY_USEOLDMETHODDEF

MyLayout/Lib/MyBaseLayout.m

+15
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,18 @@ -(void)setMyBottomMargin:(CGFloat)bottomMargin
141141
self.bottomPos.equalTo(@(bottomMargin));
142142
}
143143

144+
-(CGFloat)myMargin
145+
{
146+
return self.leftPos.margin;
147+
}
144148

149+
-(void)setMyMargin:(CGFloat)myMargin
150+
{
151+
self.topPos.equalTo(@(myMargin));
152+
self.leftPos.equalTo(@(myMargin));
153+
self.rightPos.equalTo(@(myMargin));
154+
self.bottomPos.equalTo(@(myMargin));
155+
}
145156

146157
-(MyLayoutDime*)widthDime
147158
{
@@ -979,13 +990,17 @@ -(CGRect)estimateLayoutRect:(CGSize)size inSizeClass:(MySizeClass)sizeClass
979990
if (!hasSubLayout)
980991
rect = self.absPos.frame;
981992
else
993+
{
982994
rect = [self calcLayoutRect:CGSizeZero isEstimate:YES pHasSubLayout:&hasSubLayout sizeClass:sizeClass];
995+
self.absPos.frame = rect;
996+
}
983997

984998

985999
//计算后还原为默认sizeClass
9861000
for (UIView *sbv in self.subviews)
9871001
{
9881002
sbv.absPos.sizeClass = self.myDefaultSizeClass;
1003+
9891004
}
9901005
self.absPos.sizeClass = self.myDefaultSizeClass;
9911006

MyLayout/Lib/MyDimeScale.h

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//
2+
// MyDimeScale.h
3+
// MyLayout
4+
//
5+
// Created by apple on 16/2/23.
6+
// Copyright (c) 2015年 欧阳大哥. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
#import <UIKit/UIKit.h>
11+
12+
/**一个简单的用于计算不同屏幕的伸缩尺寸的辅助类,用于实现不同大小屏幕之间的位置和尺寸的适配**/
13+
@interface MyDimeScale : NSObject
14+
15+
//请在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions函数中
16+
//设置你的UI设计人员设计的图片的尺寸的点数,如果用iPhone6的设备制作的UI图则size设置为375,667
17+
+(void)setUITemplateSize:(CGSize)size;
18+
19+
20+
+(CGFloat)scale:(CGFloat)val; //返回对角线缩放的比例
21+
22+
+(CGFloat)scaleW:(CGFloat)val; //返回宽度缩放的比例
23+
24+
+(CGFloat)scaleH:(CGFloat)val; //返回高度缩放的比例
25+
26+
@end
27+
28+
29+
#define MYDIMESCALE(val) ([MyDimeScale scale:val])
30+
#define MYDIMESCALEW(val) ([MyDimeScale scaleW:val])
31+
#define MYDIMESCALEH(val) ([MyDimeScale scaleH:val])

MyLayout/Lib/MyDimeScale.m

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//
2+
// MyDimeScale.m
3+
// MyLayout
4+
//
5+
// Created by apple on 16/2/23.
6+
// Copyright (c) 2015年 欧阳大哥. All rights reserved.
7+
//
8+
9+
#import "MyDimeScale.h"
10+
11+
@implementation MyDimeScale
12+
13+
CGFloat _rate = 1;
14+
CGFloat _wrate = 1;
15+
CGFloat _hrate = 1;
16+
17+
18+
+(void)setUITemplateSize:(CGSize)size
19+
{
20+
CGSize screenSize = [UIScreen mainScreen].bounds.size;
21+
22+
_wrate = screenSize.width / size.width;
23+
_hrate = screenSize.height / size.height;
24+
_rate = sqrt((screenSize.width * screenSize.width + screenSize.height * screenSize.height) / (size.width * size.width + size.height * size.height));
25+
}
26+
27+
+(CGFloat)scale:(CGFloat)val
28+
{
29+
return val * _rate;
30+
}
31+
32+
+(CGFloat)scaleW:(CGFloat)val
33+
{
34+
return val * _wrate;
35+
}
36+
37+
+(CGFloat)scaleH:(CGFloat)val
38+
{
39+
return val * _hrate;
40+
}
41+
42+
43+
44+
@end

MyLayout/Lib/MyLayout.h

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#define MyLayout_MyLayout_h
3737

3838
#import "MyLayoutDef.h"
39+
#import "MyDimeScale.h"
3940
#import "MyLayoutPos.h"
4041
#import "MyLayoutDime.h"
4142
#import "MyLinearLayout.h"

MyLayout/Lib/MyLayoutSizeClass.h

+1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ typedef enum : unsigned char{
118118
@property(nonatomic, assign) CGFloat myTopMargin;
119119
@property(nonatomic, assign) CGFloat myRightMargin;
120120
@property(nonatomic, assign) CGFloat myBottomMargin;
121+
@property(nonatomic, assign) CGFloat myMargin;
121122
@property(nonatomic, assign) CGFloat myCenterXOffset;
122123
@property(nonatomic, assign) CGFloat myCenterYOffset;
123124
@property(nonatomic, assign) CGPoint myCenterOffset;

MyLayout/Lib/MyLayoutSizeClass.m

+13
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,19 @@ -(void)setMyBottomMargin:(CGFloat)bottomMargin
129129
self.bottomPos.equalTo(@(bottomMargin));
130130
}
131131

132+
-(CGFloat)myMargin
133+
{
134+
return self.leftPos.margin;
135+
}
136+
137+
-(void)setMyMargin:(CGFloat)myMargin
138+
{
139+
self.topPos.equalTo(@(myMargin));
140+
self.leftPos.equalTo(@(myMargin));
141+
self.rightPos.equalTo(@(myMargin));
142+
self.bottomPos.equalTo(@(myMargin));
143+
}
144+
132145

133146
-(CGFloat)myCenterXOffset
134147
{

README.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# MyLayout1.1.3
1+
# MyLayout1.1.4
22

33
## 新版本注意
44
为了防止命名冲突,以及命名的规范,1.1.1版本对一些方法进行了重命名,以及枚举值重新命名,请浏览最下面的如何解决命名冲突和报警的问题。
@@ -63,6 +63,12 @@ Then, run the following command:
6363
$ pod install
6464
```
6565

66+
## V1.1.4版本新功能
67+
1. 修正了尺寸评估函数`estimateLayoutRect`的一个多层嵌套是无法正确评估尺寸的BUG。
68+
2. 添加了属性`myMargin`用来简单快速的设置myLeftMarign,myTopMargin,myRightMargin,myBottomMargin都是相等的值。
69+
3. 增加了`MyDimeScale`这个工具类,用来实现不同屏幕的尺寸和位置的缩放的功能,加入我们的UI给我们的是iPhone6的设计图,并指定了某个视图的高度为100但又同时希望在iPhone5上高度缩小,而在iPhone6Plus上高度增加,则可以通过`[MyDimeScale scale:100]`得到各种屏幕的缩放后的值了。
70+
71+
6672
## V1.1.3版本新功能
6773
1. 对SizeClass支持和竖屏MySizeClass_Portrait和横屏MySizeClass_Landscape。以便支持单独的横屏和竖屏的界面适配,尤其是对iPad设备的横竖屏进行区分适配。
6874

0 commit comments

Comments
 (0)