Skip to content

Commit 865e86a

Browse files
committed
Merge pull request PureLayout#118 from sger/master
Add new example "Basic UIScrollView"
2 parents ccb38c5 + 9a1e7c8 commit 865e86a

File tree

6 files changed

+178
-2
lines changed

6 files changed

+178
-2
lines changed

PureLayout/Example-iOS/ALiOSDemoListController.m

+2-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ - (NSArray *)demoTitles
7979
@"Animating Constraints", // Demo 7
8080
@"Constraint Identifiers (iOS 7.0+)", // Demo 8
8181
@"Layout Margins (iOS 8.0+)", // Demo 9
82-
@"Constraints Without Installing" // Demo 10
82+
@"Constraints Without Installing", // Demo 10
83+
@"Basic UIScrollView" // Demo 11
8384
];
8485
}
8586

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// ALiOSDemo11ViewController.h
3+
// PureLayout Example-iOS
4+
//
5+
// Copyright (c) 2014-2015 Spiros Gerokostas
6+
// https://github.com/PureLayout/PureLayout
7+
//
8+
9+
#import <UIKit/UIKit.h>
10+
11+
@interface ALiOSDemo11ViewController : UIViewController
12+
13+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
//
2+
// ALiOSDemo11ViewController.m
3+
// PureLayout Example-iOS
4+
//
5+
// Copyright (c) 2014-2015 Spiros Gerokostas
6+
// https://github.com/PureLayout/PureLayout
7+
//
8+
9+
#import "ALiOSDemo11ViewController.h"
10+
#import <PureLayout/PureLayout.h>
11+
12+
@interface ALiOSDemo11ViewController ()
13+
14+
@property (nonatomic, strong) UILabel *blueLabel;
15+
@property (nonatomic, strong) UIScrollView *scrollView;
16+
@property (nonatomic, strong) UIView *contentView;
17+
18+
@property (nonatomic, assign) BOOL didSetupConstraints;
19+
20+
@end
21+
22+
@implementation ALiOSDemo11ViewController
23+
24+
- (void)loadView
25+
{
26+
self.view = [UIView new];
27+
self.view.backgroundColor = [UIColor colorWithWhite:0.1 alpha:1.0];
28+
29+
[self.view addSubview:self.scrollView];
30+
[self.scrollView addSubview:self.contentView];
31+
[self.contentView addSubview:self.blueLabel];
32+
33+
[self.view setNeedsUpdateConstraints]; // bootstrap Auto Layout
34+
}
35+
36+
- (void)updateViewConstraints
37+
{
38+
if (!self.didSetupConstraints) {
39+
40+
[self.scrollView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
41+
42+
[self.contentView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];
43+
[self.contentView autoMatchDimension:ALDimensionWidth toDimension:ALDimensionWidth ofView:self.view];
44+
45+
[self.blueLabel autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:20.0f];
46+
[self.blueLabel autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:20.0f];
47+
[self.blueLabel autoPinEdgeToSuperviewEdge:ALEdgeTrailing withInset:20.0f];
48+
[self.blueLabel autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:20.0f];
49+
50+
self.didSetupConstraints = YES;
51+
}
52+
53+
[super updateViewConstraints];
54+
}
55+
56+
- (UIScrollView *)scrollView
57+
{
58+
if (!_scrollView) {
59+
_scrollView = [UIScrollView newAutoLayoutView];
60+
}
61+
return _scrollView;
62+
}
63+
64+
- (UIView *)contentView
65+
{
66+
if (!_contentView) {
67+
_contentView = [UIView newAutoLayoutView];
68+
}
69+
return _contentView;
70+
}
71+
72+
- (UILabel *)blueLabel
73+
{
74+
if (!_blueLabel) {
75+
_blueLabel = [UILabel newAutoLayoutView];
76+
_blueLabel.numberOfLines = 0;
77+
_blueLabel.lineBreakMode = NSLineBreakByClipping;
78+
_blueLabel.backgroundColor = [UIColor blueColor];
79+
_blueLabel.textColor = [UIColor whiteColor];
80+
_blueLabel.text = NSLocalizedString(@"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", nil);
81+
}
82+
return _blueLabel;
83+
}
84+
85+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
//
2+
// iOSDemo11ViewController.swift
3+
// PureLayout Example-iOS
4+
//
5+
// Copyright (c) 2015 Spiros Gerokostas
6+
// https://github.com/PureLayout/PureLayout
7+
//
8+
9+
import UIKit
10+
import PureLayout
11+
12+
@objc(iOSDemo11ViewController)
13+
class iOSDemo11ViewController: UIViewController {
14+
15+
let scrollView = UIScrollView.newAutoLayoutView()
16+
let contentView = UIView.newAutoLayoutView()
17+
18+
let blueLabel: UILabel = {
19+
let label = UILabel.newAutoLayoutView()
20+
label.backgroundColor = .blueColor()
21+
label.numberOfLines = 0
22+
label.lineBreakMode = .ByClipping
23+
label.textColor = .whiteColor()
24+
label.text = NSLocalizedString("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", comment: "")
25+
return label
26+
}()
27+
28+
var didSetupConstraints = false
29+
30+
override func loadView() {
31+
view = UIView()
32+
view.backgroundColor = UIColor(white: 0.1, alpha: 1.0)
33+
34+
view.addSubview(scrollView)
35+
scrollView.addSubview(contentView)
36+
contentView.addSubview(blueLabel)
37+
38+
view.setNeedsUpdateConstraints() // bootstrap Auto Layout
39+
}
40+
41+
override func updateViewConstraints() {
42+
43+
if (!didSetupConstraints) {
44+
45+
scrollView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)
46+
47+
contentView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)
48+
contentView.autoMatchDimension(.Width, toDimension: .Width, ofView: view)
49+
50+
blueLabel.autoPinEdgeToSuperviewEdge(.Top, withInset: 20)
51+
blueLabel.autoPinEdgeToSuperviewEdge(.Leading, withInset: 20)
52+
blueLabel.autoPinEdgeToSuperviewEdge(.Trailing, withInset: 20)
53+
blueLabel.autoPinEdgeToSuperviewEdge(.Bottom, withInset: 20)
54+
55+
didSetupConstraints = true
56+
}
57+
58+
super.updateViewConstraints()
59+
}
60+
}

PureLayout/Example-iOS/Images-iOS.xcassets/AppIcon.appiconset/Contents.json

+5
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@
9494
"idiom" : "ipad",
9595
"size" : "76x76",
9696
"scale" : "2x"
97+
},
98+
{
99+
"idiom" : "ipad",
100+
"size" : "83.5x83.5",
101+
"scale" : "2x"
97102
}
98103
],
99104
"info" : {

PureLayout/PureLayout.xcodeproj/project.pbxproj

+13-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
164C8B8B1C0D37BF0007A6B1 /* PureLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 164C8B831C0D36500007A6B1 /* PureLayout.framework */; };
2323
164C8B8C1C0D37C70007A6B1 /* PureLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 164C8B831C0D36500007A6B1 /* PureLayout.framework */; };
2424
164C8B8D1C0D37C70007A6B1 /* PureLayout.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 164C8B831C0D36500007A6B1 /* PureLayout.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
25+
567E6C881C4125C60031B78F /* ALiOSDemo11ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 567E6C861C4125C60031B78F /* ALiOSDemo11ViewController.m */; };
26+
567E6C891C4126CF0031B78F /* iOSDemo11ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 567E6C831C41240E0031B78F /* iOSDemo11ViewController.swift */; };
2527
A7371DC31B68792800DB94B6 /* PureLayoutBatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A7371DC21B68792800DB94B6 /* PureLayoutBatchTests.m */; };
2628
A7371DC41B68792800DB94B6 /* PureLayoutBatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A7371DC21B68792800DB94B6 /* PureLayoutBatchTests.m */; };
2729
A7D0FF361B8146370025AF37 /* PureLayoutIdentifierTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D0FF351B8146370025AF37 /* PureLayoutIdentifierTests.m */; };
@@ -236,6 +238,9 @@
236238
164C8B591C0D354F0007A6B1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
237239
164C8B831C0D36500007A6B1 /* PureLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PureLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; };
238240
164C8B921C0D380E0007A6B1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
241+
567E6C831C41240E0031B78F /* iOSDemo11ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iOSDemo11ViewController.swift; path = "Example-iOS/Demos/iOSDemo11ViewController.swift"; sourceTree = SOURCE_ROOT; };
242+
567E6C851C4125C60031B78F /* ALiOSDemo11ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ALiOSDemo11ViewController.h; path = "Example-iOS/Demos/ALiOSDemo11ViewController.h"; sourceTree = SOURCE_ROOT; };
243+
567E6C861C4125C60031B78F /* ALiOSDemo11ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ALiOSDemo11ViewController.m; path = "Example-iOS/Demos/ALiOSDemo11ViewController.m"; sourceTree = SOURCE_ROOT; };
239244
A7371DC21B68792800DB94B6 /* PureLayoutBatchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PureLayoutBatchTests.m; path = PureLayoutTests/PureLayoutBatchTests.m; sourceTree = "<group>"; };
240245
A7D0FF351B8146370025AF37 /* PureLayoutIdentifierTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PureLayoutIdentifierTests.m; path = PureLayoutTests/PureLayoutIdentifierTests.m; sourceTree = "<group>"; };
241246
A7D4964F1B7AF1D100A74818 /* iOSDemo9ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iOSDemo9ViewController.swift; path = "Example-iOS/Demos/iOSDemo9ViewController.swift"; sourceTree = SOURCE_ROOT; };
@@ -445,6 +450,7 @@
445450
A7DB5C951B7AEC83000ED37F /* iOSDemo8ViewController.swift */,
446451
A7D4964F1B7AF1D100A74818 /* iOSDemo9ViewController.swift */,
447452
A7D496511B7AF44D00A74818 /* iOSDemo10ViewController.swift */,
453+
567E6C831C41240E0031B78F /* iOSDemo11ViewController.swift */,
448454
);
449455
name = Swift;
450456
sourceTree = "<group>";
@@ -472,6 +478,8 @@
472478
B162DF7719EB3A4500D56FEA /* ALiOSDemo9ViewController.m */,
473479
B1B9C68A1A1E6FC200E50B6A /* ALiOSDemo10ViewController.h */,
474480
B1B9C68B1A1E6FC200E50B6A /* ALiOSDemo10ViewController.m */,
481+
567E6C851C4125C60031B78F /* ALiOSDemo11ViewController.h */,
482+
567E6C861C4125C60031B78F /* ALiOSDemo11ViewController.m */,
475483
);
476484
name = "Objective-C";
477485
sourceTree = "<group>";
@@ -913,7 +921,7 @@
913921
isa = PBXProject;
914922
attributes = {
915923
CLASSPREFIX = AL;
916-
LastSwiftUpdateCheck = 0710;
924+
LastSwiftUpdateCheck = 0720;
917925
LastUpgradeCheck = 0700;
918926
TargetAttributes = {
919927
164C8B4D1C0D354E0007A6B1 = {
@@ -1066,6 +1074,7 @@
10661074
isa = PBXSourcesBuildPhase;
10671075
buildActionMask = 2147483647;
10681076
files = (
1077+
567E6C891C4126CF0031B78F /* iOSDemo11ViewController.swift in Sources */,
10691078
A7D496591B7B084800A74818 /* ALiOSDemo2ViewController.m in Sources */,
10701079
A7D4965A1B7B084800A74818 /* iOSDemo8ViewController.swift in Sources */,
10711080
A7D4965B1B7B084800A74818 /* ALiOSDemo5ViewController.m in Sources */,
@@ -1096,6 +1105,7 @@
10961105
isa = PBXSourcesBuildPhase;
10971106
buildActionMask = 2147483647;
10981107
files = (
1108+
567E6C881C4125C60031B78F /* ALiOSDemo11ViewController.m in Sources */,
10991109
B1046AD11A7F32670017187F /* NSArray+PureLayout.m in Sources */,
11001110
B1046AD01A7F32670017187F /* ALView+PureLayout.m in Sources */,
11011111
B1046AD21A7F32670017187F /* NSLayoutConstraint+PureLayout.m in Sources */,
@@ -1486,6 +1496,7 @@
14861496
PRODUCT_BUNDLE_IDENTIFIER = "com.PureLayout.$(PRODUCT_NAME:rfc1034identifier)";
14871497
PRODUCT_NAME = PureLayout;
14881498
SKIP_INSTALL = YES;
1499+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
14891500
TARGETED_DEVICE_FAMILY = "1,2";
14901501
VERSIONING_SYSTEM = "apple-generic";
14911502
VERSION_INFO_PREFIX = "";
@@ -1894,6 +1905,7 @@
18941905
164C8B5B1C0D354F0007A6B1 /* Release */,
18951906
);
18961907
defaultConfigurationIsVisible = 0;
1908+
defaultConfigurationName = Release;
18971909
};
18981910
164C8B801C0D36500007A6B1 /* Build configuration list for PBXNativeTarget "PureLayout_tvOS" */ = {
18991911
isa = XCConfigurationList;

0 commit comments

Comments
 (0)