Releases: layoutBox/PinLayout
Add methods to layout a view between two other views
Add methods to layout a view between two other views
Add methods to position a view between two other views, either horizontally or vertically.
New Methods:
-
horizontallyBetween(:UIView, and: UIView)
Position the view between the two specified views horizontally. The method layout the view's left and right edges. The order of the reference views is irrelevant.
Note that the layout will be applied only if there is horizontal space between the specified views. -
horizontallyBetween(:UIView, and: UIView, aligned: VerticalAlign)
Position the view between the two specified views horizontally and aligned it using the specified VerticalAlign. The view will be aligned related to the first specified reference view. Note that the layout will be applied only if there is horizontal space between the specified views. -
verticallyBetween(:UIView, and: UIView)
Position the view between the two specified views vertically. The method layout the view's top and bottom edges. The order of the reference views is irrelevant. Note that the layout will be applied only if there is vertical space between the specified views. -
verticallyBetween(:UIView, and: UIView, aligned: HorizontalAlign)
Position the view between the two specified views vertically and aligned it using the specified HorizontalAlign. The view will be aligned related to the first specified reference view. Note that the layout will be applied only if there is vertical space between the specified views.
Example:
view.pin.verticallyBetween(viewA, and: viewB, aligned: .center).marginVertical(10)Add `pin.readableMargins` and `pin.layoutmargins` properties
Add properties:
-
pin.readableMargins: UIEdgeInset:
PinLayout'sUIView.pin.readableMarginsproperty expose UIKitUIView.readableContentGuideas an UIEdgeInsets. This is really useful since UIKit only expose the readableContent area to Auto Layout using UILayoutGuide. -
pin.layoutmargins: UIEdgeInset
PinLayout'sUIView.pin.layoutMarginsproperty expose directly the value of UIKitUIView.layoutMargins. The property exists only to be consistent with the other areas:pin.safeArea,pin.readableMarginsandpin.layoutmargins. So its usage is not necessary.
PinLayout Swift 3 support
Deprecated method `fitSize()` has been removed
BREAKING CHANGE: fitSize() has been removed after being deprecated for 10 months. sizeToFit(:FitType) should now be used instead. See Adjusting size.
Plus:
Add Animations documentation and examples + 'private' declarations
-
Add documentation that explains how PinLayout can handle view's animations.
- Show few strategies that can be used to animate views.
-
Add animation examples using PinLayout
-
Convert
fileprivatetoprivatedeclarations -
Add an new "Examples" markdown page showing all PinLayout's examples.
Method that position multiple edges now accept an `offset` parameter
Method that position multiple edges now accept an offset parameter that specifies the distance from their superview's corresponding edges in pixels.
New methods:
-
topLeft(_ offset: CGFloat) -
topCenter(_ topOffset: CGFloat) -
topRight(_ offset: CGFloat) -
centerLeft(_ leftOffset: CGFloat) -
center(_ offset: CGFloat) -
centerRight(_ rightOffset offset: CGFloat) -
bottomLeft(_ offset: CGFloat) -
bottomCenter(_ bottomOffset: CGFloat) -
bottomRight(_ offset: CGFloat)
For example, to position a view at the top left corner with a top and left margin of 10 pixels:
view.pin.topLeft(10)
Other change
Cleanup the interface by using default value parameters.
Add `sizeToFit()` method
Add sizeToFit() method
The method adjust the view's size based on the result of the method UIView.sizeToFit(). Particularly useful for controls/views that have an intrinsic size (label, button, ...).
Fix a regression
Add support for CALayer layout
PinLayout can now layouts CALayer's. All PinLayout's properties and methods are available, with the following exceptions:
sizeToFit(:FitType)is not supported. Support forsizeToFit(:FitType)can be added to your custom CALayer subclasses, just make those layers conform to theSizeCalculableprotocol and implement the two required functions.CALayer.pin.safeAreaproperty is not available.aspectRatio()with no parameters
See CALayer Support documentation for more information
- Added by Antoine Lamy in Pull Request #151
Refactoring using generics
Refactoring to avoid having to deal directly with view types, making it easier to extend layouting to other APIs (e.g: CALayer)
- Added by Antoine Lamy in Pull Request #148


