Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UIView extension for spacing views evenly. #11

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
//: Playground - noun: a place where people can play

import UIKit
import SpaceEvenlyConstraints
import XCPlayground

var str = "Hello, playground"

let containerView = UIView(frame: CGRectMake(0, 0, 320, 320))
containerView.translatesAutoresizingMaskIntoConstraints = false
containerView.autoresizesSubviews = false
containerView.backgroundColor = UIColor.blueColor()

func createLabel(text:String) -> UILabel {
let label = UILabel(frame: CGRectZero)
label.translatesAutoresizingMaskIntoConstraints = false
label.text = text
label.backgroundColor = UIColor.whiteColor()
label.textColor = UIColor.blackColor()
label.textAlignment = .Center
return label
}

let firstLabel = createLabel("1")
let secondLabel = createLabel("2")
let thirdLabel = createLabel("3")
let fourthLabel = createLabel("4")
let fifthLabel = createLabel("5")
let firstRow = [
firstLabel,
secondLabel,
thirdLabel,
fourthLabel,
fifthLabel
] as [UIView]

let sixthLabel = createLabel("6")
let seventhLabel = createLabel("7")
let eigthLabel = createLabel("8")
let ninthLabel = createLabel("9")
let secondRow = [
sixthLabel,
seventhLabel,
eigthLabel,
ninthLabel
] as [UIView]

let tenthLabel = createLabel("10")
let eleventhLabel = createLabel("11")
let thirdRow = [
tenthLabel,
eleventhLabel
] as [UIView]

let firstColumn = [
firstLabel,
sixthLabel,
tenthLabel
] as [UIView]

let emptyOptions = NSLayoutFormatOptions(rawValue: 0)

for view in firstRow + secondRow + thirdRow {
containerView.addSubview(view)
}

let sideLength:CGFloat = 40
let sizeConstraint = firstLabel.makeSquare(minSide: sideLength)

let rectangleConstraint = tenthLabel.makeRectangle(minHeight: sideLength, aspectRatio: 2.0)

containerView.align(firstRow, attribute: .Top)
containerView.align(secondRow, attribute: .Top)
containerView.align(thirdRow, attribute: .Top)
containerView.align(firstRow + secondRow, attribute: .Height)
containerView.align(firstRow + secondRow, attribute: .Width)
containerView.align(thirdRow, attribute: .Height)
containerView.align(thirdRow, attribute: .Width)

var firstRowSpacingConstraints = containerView.fixedWidthSpaceEvenly(firstRow, size: sideLength)

var secondRowSpacingConstraints = containerView.fixedWidthSpaceEvenly(secondRow, size: sideLength)

var thirdRowSpacingConstraints = containerView.fixedWidthSpaceEvenly(thirdRow, size: 2.0*sideLength)

var firstColumnSpacingConstraints = containerView.fixedHeightSpaceEvenly(firstColumn, size: sideLength)

XCPShowView("Container View", view:containerView)
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='ios' requires-full-environment='true'>
<timeline fileName='timeline.xctimeline'/>
</playground>
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Timeline
version = "3.0">
<TimelineItems>
</TimelineItems>
</Timeline>
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {

/* Begin PBXBuildFile section */
5B4817981B752B2E0009F6CA /* SpaceEvenlyConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B4817971B752B2E0009F6CA /* SpaceEvenlyConstraints.h */; settings = {ATTRIBUTES = (Public, ); }; };
5B4817C11B752E360009F6CA /* UIView+LayoutExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4817C01B752E360009F6CA /* UIView+LayoutExtensions.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
5B4817941B752B2E0009F6CA /* SpaceEvenlyConstraints.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SpaceEvenlyConstraints.framework; sourceTree = BUILT_PRODUCTS_DIR; };
5B4817971B752B2E0009F6CA /* SpaceEvenlyConstraints.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SpaceEvenlyConstraints.h; sourceTree = "<group>"; };
5B4817991B752B2E0009F6CA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
5B4817C01B752E360009F6CA /* UIView+LayoutExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+LayoutExtensions.swift"; sourceTree = "<group>"; };
5B4817C21B752E610009F6CA /* SpaceEvenlyPlayground.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = SpaceEvenlyPlayground.playground; sourceTree = "<group>"; };
5BE003E51B75327200884100 /* LayoutConstraints.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = LayoutConstraints.playground; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
5B4817901B752B2E0009F6CA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
5B48178A1B752B2E0009F6CA = {
isa = PBXGroup;
children = (
5BE003E51B75327200884100 /* LayoutConstraints.playground */,
5B4817C21B752E610009F6CA /* SpaceEvenlyPlayground.playground */,
5B4817961B752B2E0009F6CA /* SpaceEvenlyConstraints */,
5B4817951B752B2E0009F6CA /* Products */,
);
sourceTree = "<group>";
};
5B4817951B752B2E0009F6CA /* Products */ = {
isa = PBXGroup;
children = (
5B4817941B752B2E0009F6CA /* SpaceEvenlyConstraints.framework */,
);
name = Products;
sourceTree = "<group>";
};
5B4817961B752B2E0009F6CA /* SpaceEvenlyConstraints */ = {
isa = PBXGroup;
children = (
5B4817C01B752E360009F6CA /* UIView+LayoutExtensions.swift */,
5B4817971B752B2E0009F6CA /* SpaceEvenlyConstraints.h */,
5B4817991B752B2E0009F6CA /* Info.plist */,
);
path = SpaceEvenlyConstraints;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
5B4817911B752B2E0009F6CA /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
5B4817981B752B2E0009F6CA /* SpaceEvenlyConstraints.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
5B4817931B752B2E0009F6CA /* SpaceEvenlyConstraints */ = {
isa = PBXNativeTarget;
buildConfigurationList = 5B48179C1B752B2E0009F6CA /* Build configuration list for PBXNativeTarget "SpaceEvenlyConstraints" */;
buildPhases = (
5B48178F1B752B2E0009F6CA /* Sources */,
5B4817901B752B2E0009F6CA /* Frameworks */,
5B4817911B752B2E0009F6CA /* Headers */,
5B4817921B752B2E0009F6CA /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = SpaceEvenlyConstraints;
productName = SpaceEvenlyConstraints;
productReference = 5B4817941B752B2E0009F6CA /* SpaceEvenlyConstraints.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
5B48178B1B752B2E0009F6CA /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0700;
LastUpgradeCheck = 0700;
ORGANIZATIONNAME = "Martin Nygren";
TargetAttributes = {
5B4817931B752B2E0009F6CA = {
CreatedOnToolsVersion = 7.0;
};
};
};
buildConfigurationList = 5B48178E1B752B2E0009F6CA /* Build configuration list for PBXProject "SpaceEvenlyConstraints" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 5B48178A1B752B2E0009F6CA;
productRefGroup = 5B4817951B752B2E0009F6CA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
5B4817931B752B2E0009F6CA /* SpaceEvenlyConstraints */,
);
};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
5B4817921B752B2E0009F6CA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
5B48178F1B752B2E0009F6CA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5B4817C11B752E360009F6CA /* UIView+LayoutExtensions.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
5B48179A1B752B2E0009F6CA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
5B48179B1B752B2E0009F6CA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
5B48179D1B752B2E0009F6CA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = SpaceEvenlyConstraints/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "uk.co.nygren.martin.--PRODUCT-NAME-rfc1034identifier-.SpaceEvenlyConstraints";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
5B48179E1B752B2E0009F6CA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = SpaceEvenlyConstraints/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "uk.co.nygren.martin.--PRODUCT-NAME-rfc1034identifier-.SpaceEvenlyConstraints";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
5B48178E1B752B2E0009F6CA /* Build configuration list for PBXProject "SpaceEvenlyConstraints" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5B48179A1B752B2E0009F6CA /* Debug */,
5B48179B1B752B2E0009F6CA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
5B48179C1B752B2E0009F6CA /* Build configuration list for PBXNativeTarget "SpaceEvenlyConstraints" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5B48179D1B752B2E0009F6CA /* Debug */,
5B48179E1B752B2E0009F6CA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 5B48178B1B752B2E0009F6CA /* Project object */;
}
Loading