mirror of https://github.com/SnapKit/SnapKit
3.0.2 Release (#347)
* Update ISSUE_TEMPLATE.md * Update ISSUE_TEMPLATE.md * Update ISSUE_TEMPLATE.md * Update ISSUE_TEMPLATE.md * Update ISSUE_TEMPLATE.md * fix "Mutating a priority from required to not on an installed constra… (#323) * fix "Mutating a priority from required to not on an installed constraint (or vice-versa) is not supported." when the priority is not changed * add more check when changing layout constraint priority * add more lenient check when changing layout constraint priority * fix UILayoutPriorityRequired available only on iOS * fix undeclared UILayoutPriority on macOS * add check for tvOS * change the result constraint of maker.center.equalTo(CGPoint) to based on the original point of superview (#336) * change center.equalTo * fix logic * Add ConstraintMaker shortcuts for superview access (#341) Added two new shortcuts for access superview in ConstraintMakerRelatable `greaterThanOrEqualToSuperview` `lessThanOrEqualToSuperview` * Add `topMargin` to constraint maker (#343) * Fix erroneus scheme * Update settings for Carthage * Prepare 3.0.2 release
This commit is contained in:
parent
267cffa493
commit
02a0b2d2b7
|
@ -1,7 +1,10 @@
|
||||||
### New Issue Checklist
|
### New Issue Checklist
|
||||||
|
|
||||||
|
🚫 If this template is not filled out your issue **will** be closed with no comment. 🚫
|
||||||
|
|
||||||
* [ ] I have looked at the [Documentation](http://snapkit.io/docs)
|
* [ ] I have looked at the [Documentation](http://snapkit.io/docs)
|
||||||
* [ ] I have read the [F.A.Q.](http://snapkit.io/faq)
|
* [ ] I have read the [F.A.Q.](http://snapkit.io/faq)
|
||||||
|
* [ ] I have filled out this issue template.
|
||||||
|
|
||||||
### Issue Info
|
### Issue Info
|
||||||
|
|
||||||
|
@ -15,3 +18,4 @@
|
||||||
|
|
||||||
### Issue Description
|
### Issue Description
|
||||||
|
|
||||||
|
⚠️ Replace this with the description of your issue. ⚠️
|
||||||
|
|
|
@ -59,7 +59,7 @@ platform :ios, '10.0'
|
||||||
use_frameworks!
|
use_frameworks!
|
||||||
|
|
||||||
target '<Your Target Name>' do
|
target '<Your Target Name>' do
|
||||||
pod 'SnapKit', '~> 3.0'
|
pod 'SnapKit', '~> 3.0.2'
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ $ brew install carthage
|
||||||
To integrate SnapKit into your Xcode project using Carthage, specify it in your `Cartfile`:
|
To integrate SnapKit into your Xcode project using Carthage, specify it in your `Cartfile`:
|
||||||
|
|
||||||
```ogdl
|
```ogdl
|
||||||
github "SnapKit/SnapKit" ~> 3.0
|
github "SnapKit/SnapKit" ~> 3.0.2
|
||||||
```
|
```
|
||||||
|
|
||||||
Run `carthage update` to build the framework and drag the built `SnapKit.framework` into your Xcode project.
|
Run `carthage update` to build the framework and drag the built `SnapKit.framework` into your Xcode project.
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
Pod::Spec.new do |s|
|
Pod::Spec.new do |s|
|
||||||
s.name = 'SnapKit'
|
s.name = 'SnapKit'
|
||||||
s.version = '3.0.1'
|
s.version = '3.0.2'
|
||||||
s.license = 'MIT'
|
s.license = 'MIT'
|
||||||
s.summary = 'Harness the power of auto layout with a simplified, chainable, and compile time safe syntax.'
|
s.summary = 'Harness the power of auto layout with a simplified, chainable, and compile time safe syntax.'
|
||||||
s.homepage = 'https://github.com/SnapKit/SnapKit'
|
s.homepage = 'https://github.com/SnapKit/SnapKit'
|
||||||
s.authors = { 'Robert Payne' => 'robertpayne@me.com' }
|
s.authors = { 'Robert Payne' => 'robertpayne@me.com' }
|
||||||
s.social_media_url = 'http://twitter.com/robertjpayne'
|
s.social_media_url = 'http://twitter.com/robertjpayne'
|
||||||
s.source = { :git => 'https://github.com/SnapKit/SnapKit.git', :tag => '3.0.1' }
|
s.source = { :git => 'https://github.com/SnapKit/SnapKit.git', :tag => '3.0.2' }
|
||||||
|
|
||||||
s.ios.deployment_target = '8.0'
|
s.ios.deployment_target = '8.0'
|
||||||
s.osx.deployment_target = '10.11'
|
s.osx.deployment_target = '10.11'
|
||||||
|
|
|
@ -413,8 +413,8 @@
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
@ -436,11 +436,12 @@
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = iphoneos;
|
PRODUCT_BUNDLE_PACKAGE_TYPE = BNDL;
|
||||||
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos macosx";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos appletvsimulator appletvos";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 3.0;
|
SWIFT_VERSION = 3.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2,3,4";
|
TARGETED_DEVICE_FAMILY = "1,2,3,4";
|
||||||
|
TVOS_DEPLOYMENT_TARGET = 9.0;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
@ -461,8 +462,8 @@
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
COPY_PHASE_STRIP = NO;
|
||||||
COPY_PHASE_STRIP = YES;
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
@ -476,11 +477,11 @@
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
PRODUCT_BUNDLE_PACKAGE_TYPE = BNDL;
|
||||||
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos macosx";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos appletvsimulator appletvos";
|
||||||
SWIFT_VERSION = 3.0;
|
SWIFT_VERSION = 3.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2,3,4";
|
TARGETED_DEVICE_FAMILY = "1,2,3,4";
|
||||||
VALIDATE_PRODUCT = YES;
|
TVOS_DEPLOYMENT_TARGET = 9.0;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
@ -489,20 +490,17 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1.0.0;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
||||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "io.snapkit.$(PRODUCT_NAME:rfc1034identifier)";
|
PRODUCT_BUNDLE_IDENTIFIER = "io.snapkit.$(PRODUCT_NAME:rfc1034identifier)";
|
||||||
|
PRODUCT_BUNDLE_PACKAGE_TYPE = FMWK;
|
||||||
PRODUCT_NAME = SnapKit;
|
PRODUCT_NAME = SnapKit;
|
||||||
SKIP_INSTALL = YES;
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
@ -511,20 +509,16 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1.0.0;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
||||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "io.snapkit.$(PRODUCT_NAME:rfc1034identifier)";
|
PRODUCT_BUNDLE_IDENTIFIER = "io.snapkit.$(PRODUCT_NAME:rfc1034identifier)";
|
||||||
|
PRODUCT_BUNDLE_PACKAGE_TYPE = FMWK;
|
||||||
PRODUCT_NAME = SnapKit;
|
PRODUCT_NAME = SnapKit;
|
||||||
SKIP_INSTALL = YES;
|
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,20 +20,6 @@
|
||||||
ReferencedContainer = "container:SnapKit.xcodeproj">
|
ReferencedContainer = "container:SnapKit.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
<BuildActionEntry
|
|
||||||
buildForTesting = "YES"
|
|
||||||
buildForRunning = "NO"
|
|
||||||
buildForProfiling = "NO"
|
|
||||||
buildForArchiving = "NO"
|
|
||||||
buildForAnalyzing = "YES">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "537DCEAE1C35D90A00B5B899"
|
|
||||||
BuildableName = "SnapKit tvOS Tests.xctest"
|
|
||||||
BlueprintName = "SnapKit tvOS Tests"
|
|
||||||
ReferencedContainer = "container:SnapKit.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildActionEntry>
|
|
||||||
</BuildActionEntries>
|
</BuildActionEntries>
|
||||||
</BuildAction>
|
</BuildAction>
|
||||||
<TestAction
|
<TestAction
|
||||||
|
|
|
@ -114,9 +114,13 @@ public class Constraint {
|
||||||
} else {
|
} else {
|
||||||
layoutToAttribute = layoutToAttributes[0]
|
layoutToAttribute = layoutToAttributes[0]
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if self.to.target == nil && (layoutFromAttribute == .centerX || layoutFromAttribute == .centerY) {
|
||||||
|
layoutToAttribute = layoutFromAttribute == .centerX ? .left : .top
|
||||||
} else {
|
} else {
|
||||||
layoutToAttribute = layoutFromAttribute
|
layoutToAttribute = layoutFromAttribute
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
if self.from.attributes == self.to.attributes {
|
if self.from.attributes == self.to.attributes {
|
||||||
layoutToAttribute = layoutFromAttribute
|
layoutToAttribute = layoutFromAttribute
|
||||||
|
@ -228,9 +232,19 @@ public class Constraint {
|
||||||
for layoutConstraint in self.layoutConstraints {
|
for layoutConstraint in self.layoutConstraints {
|
||||||
let attribute = (layoutConstraint.secondAttribute == .notAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute
|
let attribute = (layoutConstraint.secondAttribute == .notAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute
|
||||||
layoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: attribute)
|
layoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: attribute)
|
||||||
|
|
||||||
|
#if os(iOS) || os(tvOS)
|
||||||
|
let requiredPriority: UILayoutPriority = UILayoutPriorityRequired
|
||||||
|
#else
|
||||||
|
let requiredPriority: Float = 1000.0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
if (layoutConstraint.priority < requiredPriority), (self.priority.constraintPriorityTargetValue != requiredPriority) {
|
||||||
layoutConstraint.priority = self.priority.constraintPriorityTargetValue
|
layoutConstraint.priority = self.priority.constraintPriorityTargetValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal func activateIfNeeded(updatingExisting: Bool = false) {
|
internal func activateIfNeeded(updatingExisting: Bool = false) {
|
||||||
guard let view = self.from.view else {
|
guard let view = self.from.view else {
|
||||||
|
|
|
@ -93,6 +93,11 @@ public class ConstraintMaker {
|
||||||
return self.makeExtendableWithAttributes(.rightMargin)
|
return self.makeExtendableWithAttributes(.rightMargin)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@available(iOS 8.0, *)
|
||||||
|
public var topMargin: ConstraintMakerExtendable {
|
||||||
|
return self.makeExtendableWithAttributes(.topMargin)
|
||||||
|
}
|
||||||
|
|
||||||
@available(iOS 8.0, *)
|
@available(iOS 8.0, *)
|
||||||
public var bottomMargin: ConstraintMakerExtendable {
|
public var bottomMargin: ConstraintMakerExtendable {
|
||||||
return self.makeExtendableWithAttributes(.bottomMargin)
|
return self.makeExtendableWithAttributes(.bottomMargin)
|
||||||
|
|
|
@ -87,9 +87,24 @@ public class ConstraintMakerRelatable {
|
||||||
return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line)
|
return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@discardableResult
|
||||||
|
public func lessThanOrEqualToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable {
|
||||||
|
guard let other = self.description.view.superview else {
|
||||||
|
fatalError("Expected superview but found nil when attempting make constraint `lessThanOrEqualToSuperview`.")
|
||||||
|
}
|
||||||
|
return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line)
|
||||||
|
}
|
||||||
|
|
||||||
@discardableResult
|
@discardableResult
|
||||||
public func greaterThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable {
|
public func greaterThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable {
|
||||||
return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line)
|
return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@discardableResult
|
||||||
|
public func greaterThanOrEqualToSuperview(_ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable {
|
||||||
|
guard let other = self.description.view.superview else {
|
||||||
|
fatalError("Expected superview but found nil when attempting make constraint `greaterThanOrEqualToSuperview`.")
|
||||||
|
}
|
||||||
|
return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue