Giter Site home page Giter Site logo

facade's People

Contributors

mamaral avatar montakoleg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

facade's Issues

Rounded UIImageView not showing

Hello,

I'm using

    self.imagerView = [UIImageView new];
    self.imagerView.layer.cornerRadius = self.imagerView.frame.size.width / 2;
    self.imagerView.clipsToBounds = YES;
    [self.containerView addSubview:self.imagerView];

and

[self.imagerView anchorTopLeftWithLeftPadding:10 topPadding:10 width:50 height:50];

But UIimageView is not rounding as expected.

Please advise.

What to do in times of UIStackView?

Hey @mamaral

how are you? I just stumbled upon your Project and it looks really cool. But Apple announced UIStackView and i am asking myself what the advantage is, using Facaded in comparisson to Apples Solution.

Here's a Swift Implementation!

Here's a SWIFT implementation!
It may need some optimization love, but should be 100% compliant to modern SWIFT libs.
(Anything Doubles Related needs looking into for perf sake at least.)

Swift Version Below:

//
//  UIView.swift+(Facade)
//  Copyright Go Nuts and Have Fun!
//

import Foundation
import UIKit

extension UIView {

    func fCenter() -> CGPoint {

        var center = CGPoint(x: self.frame.midX - self.frame.minX,y: self.frame.midY - self.frame.minY);

        return center;
    }

    func xMin() -> CGFloat {
        return CGRectGetMinX(self.frame)
    }

    func xMax() -> CGFloat {
        return CGRectGetMaxX(self.frame)
    }

    func yMin() -> CGFloat {
        return CGRectGetMinY(self.frame)
    }

    func yMax() -> CGFloat {
        return CGRectGetMaxY(self.frame)
    }

    func width() -> CGFloat {
        return CGRectGetWidth(self.frame)
    }

    func height() -> CGFloat {
        return CGRectGetHeight(self.frame)
    }

    func fillSuperview() {
        self.frame = CGRectMake(0, 0, CGRectGetWidth(self.superview!.frame), CGRectGetHeight(self.superview!.frame))
    }

    func anchorTopLeftWithLeftPadding(left: CGFloat, topPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(left, top, width, height)
    }

    func anchorTopRightWithRightPadding(right: CGFloat, topPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetWidth(self.superview!.frame) - width - right, top, width, height)
    }

    func anchorBottomLeftWithLeftPadding(left: CGFloat, bottomPadding bottom: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(left, CGRectGetHeight(self.superview!.frame) - height - bottom, width, height)
    }

    func anchorBottomRightWithRightPadding(right: CGFloat, bottomPadding bottom: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetWidth(self.superview!.frame) - width - right, CGRectGetHeight(self.superview!.frame) - height - bottom, width, height)
    }

    func anchorInCenterWithWidth(width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake((CGRectGetWidth(self.superview!.frame) / 2.0) - (width / 2.0), (CGRectGetHeight(self.superview!.frame) / 2.0) - (height / 2.0), width, height)
    }

    func anchorCenterLeftWithLeftPadding(left: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(left, (CGRectGetHeight(self.superview!.frame) / 2.0) - (height / 2.0), width, height)
    }

    func anchorCenterRightWithRightPadding(right: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetWidth(self.superview!.frame) - width - right, (CGRectGetHeight(self.superview!.frame) / 2.0) - (height / 2.0), width, height)
    }

    func anchorTopCenterWithTopPadding(top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake((CGRectGetWidth(self.superview!.frame) / 2.0) - (width / 2.0), top, width, height)
    }

    func anchorBottomCenterWithBottomPadding(bottom: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake((CGRectGetWidth(self.superview!.frame) / 2.0) - (width / 2.0), CGRectGetHeight(self.superview!.frame) - height - bottom, width, height)
    }

    func anchorInCenterFillingWidthAndHeightWithLeftAndRightPadding(leftAndRight: CGFloat, topAndBottomPadding topAndBottom: CGFloat) {
        self.frame = CGRectMake(leftAndRight, topAndBottom, CGRectGetWidth(self.superview!.frame) - (2 * leftAndRight), CGRectGetHeight(self.superview!.frame) - (2 * topAndBottom))
    }

    func anchorTopCenterFillingWidthWithLeftAndRightPadding(leftAndRight: CGFloat, topPadding top: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(leftAndRight, top, CGRectGetWidth(self.superview!.frame) - (2 * leftAndRight), height)
    }

    func anchorBottomCenterFillingWidthWithLeftAndRightPadding(leftAndRight: CGFloat, bottomPadding bottom: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetHeight(self.superview!.frame) - height - bottom, CGRectGetWidth(self.superview!.frame) - (2 * leftAndRight), height)
    }

    func alignToTheRightOf(view: UIView, withLeftPadding left: CGFloat, topPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + left, top, width, height)
    }

    func alignToTheRightOf(view: UIView, fillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, topPadding top: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + leftAndRight, top, CGRectGetWidth(self.superview!.frame) - CGRectGetMaxX(view.frame) - (2 * leftAndRight), height)
    }

    func alignToTheRightOf(view: UIView, matchingTopWithLeftPadding left: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + left, CGRectGetMinY(view.frame), width, height)
    }

    func alignToTheRightOf(view: UIView, matchingTopAndFillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + leftAndRight, CGRectGetMinY(view.frame), CGRectGetWidth(view.superview!.frame) - CGRectGetMaxX(view.frame) - (2 * leftAndRight), height)
    }

    func alignToTheRightOf(view: UIView, matchingCenterWithLeftPadding left: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + left, CGRectGetMidY(view.frame) - (height / 2.0), width, height)
    }

    func alignToTheRightOf(view: UIView, matchingCenterAndFillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + leftAndRight, CGRectGetMidY(view.frame) - (height / 2.0), CGRectGetWidth(view.superview!.frame) - CGRectGetMaxX(view.frame) - (2 * leftAndRight), height)
    }

    func alignToTheRightOf(view: UIView, matchingBottomWithLeftPadding left: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + left, CGRectGetMaxY(view.frame) - height, width, height)
    }

    func alignToTheRightOf(view: UIView, matchingBottomAndFillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) + leftAndRight, CGRectGetMaxY(view.frame) - height, CGRectGetWidth(view.superview!.frame) - CGRectGetMaxX(view.frame) - (2 * leftAndRight), height)
    }

    func alignToTheLeftOf(view: UIView, fillingWidthAndHeightWithLeftAndRightPadding leftAndRight: CGFloat, topAndBottomPadding topAndBottom: CGFloat) {
        self.frame = CGRectMake(leftAndRight, topAndBottom, CGRectGetMinX(view.frame) - (2 * leftAndRight), CGRectGetHeight(self.superview!.frame) - (2 * topAndBottom))
    }

    func alignToTheLeftOf(view: UIView, matchingTopWithRightPadding right: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame) - width - right, CGRectGetMinY(view.frame), width, height)
    }

    func alignToTheLeftOf(view: UIView, matchingTopAndFillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetMinY(view.frame), CGRectGetMinX(view.frame) - (2 * leftAndRight), height)
    }

    func alignToTheLeftOf(view: UIView, matchingCenterWithRightPadding right: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame) - width - right, CGRectGetMidY(view.frame) - (height / 2.0), width, height)
    }

    func alignToTheLeftOf(view: UIView, matchingCenterAndFillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetMidY(view.frame) - (height / 2.0), CGRectGetMinX(view.frame) - (2 * leftAndRight), height)
    }

    func alignToTheLeftOf(view: UIView, matchingBottomWithRightPadding right: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame) - width - right, CGRectGetMaxY(view.frame) - height, width, height)
    }

    func alignToTheLeftOf(view: UIView, matchingBottomAndFillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetMaxY(view.frame) - height, CGRectGetMinX(view.frame) - (2 * leftAndRight), height)
    }

    func alignUnder(view: UIView, withLeftPadding left: CGFloat, topPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(left, CGRectGetMaxY(view.frame) + top, width, height)
    }

    func alignUnder(view: UIView, withRightPadding right: CGFloat, topPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(self.superview!.frame) - width - right, CGRectGetMaxY(view.frame) + top, width, height)
    }

    func alignUnder(view: UIView, matchingLeftWithTopPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame), CGRectGetMaxY(view.frame) + top, width, height)
    }

    func alignUnder(view: UIView, matchingLeftAndFillingWidthWithRightPadding right: CGFloat, topPadding top: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame), CGRectGetMaxY(view.frame) + top, CGRectGetWidth(view.superview!.frame) - CGRectGetMinX(view.frame) - right, height)
    }

    func alignUnder(view: UIView, matchingCenterWithTopPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMidX(view.frame) - (width / 2.0), CGRectGetMaxY(view.frame) + top, width, height)
    }

    func alignUnder(view: UIView, centeredFillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, topPadding top: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetMaxY(view.frame) + top, CGRectGetWidth(view.superview!.frame) - (2 * leftAndRight), height)
    }

    func alignUnder(view: UIView, centeredFillingWidthAndHeightWithLeftAndRightPadding leftAndRight: CGFloat, topAndBottomPadding topAndBottom: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetMaxY(view.frame) + topAndBottom, CGRectGetWidth(view.superview!.frame) - (2 * leftAndRight), CGRectGetHeight(self.superview!.frame) - CGRectGetMaxY(view.frame) - topAndBottom - topAndBottom)
    }

    func alignUnder(view: UIView, matchingRightWithTopPadding top: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) - width, CGRectGetMaxY(view.frame) + top, width, height)
    }

    func alignUnder(view: UIView, matchingRightAndFillingWidthWithLeftPadding left: CGFloat, topPadding top: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(left, CGRectGetMaxY(view.frame) + top, CGRectGetMinX(view.frame) + CGRectGetWidth(view.frame) - left, height)
    }

    func alignUnder(view: UIView, matchingLeftAndRightFillingHeightWithTopPadding top: CGFloat, bottomPadding bottom: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame), CGRectGetMaxY(view.frame) + top, CGRectGetWidth(view.frame), CGRectGetHeight(self.superview!.frame) - CGRectGetMaxY(view.frame) - top - bottom)
    }

    func alignUnder(view: UIView, matchingLeftFillingWidthAndHeightWithRightPadding right: CGFloat, topPadding top: CGFloat, bottomPadding bottom: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame), CGRectGetMaxY(view.frame) + top, CGRectGetWidth(self.superview!.frame) - CGRectGetMinX(view.frame) - right, CGRectGetHeight(self.superview!.frame) - CGRectGetMaxY(view.frame) - top - bottom)
    }

    func alignAbove(view: UIView, matchingLeftWithBottomPadding bottom: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame), CGRectGetMinY(view.frame) - height - bottom, width, height)
    }

    func alignAbove(view: UIView, matchingLeftAndFillingWidthWithRightPadding right: CGFloat, bottomPadding bottom: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMinX(view.frame), CGRectGetMinY(view.frame) - height - bottom, CGRectGetWidth(view.superview!.frame) - CGRectGetMinX(view.frame) - right, height)
    }

    func alignAbove(view: UIView, matchingCenterWithBottomPadding bottom: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMidX(view.frame) - (width / 2.0), CGRectGetMinY(view.frame) - height - bottom, width, height)
    }

    func alignAbove(view: UIView, fillingWidthWithLeftAndRightPadding leftAndRight: CGFloat, bottomPadding bottom: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetMinY(view.frame) - height - bottom, CGRectGetWidth(view.superview!.frame) - (2 * leftAndRight), height)
    }

    func alignAbove(view: UIView, matchingRightWithBottomPadding bottom: CGFloat, width: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(CGRectGetMaxX(view.frame) - width, CGRectGetMinY(view.frame) - height - bottom, width, height)
    }

    func alignAbove(view: UIView, matchingRightAndFillingWidthWithLeftPadding left: CGFloat, bottomPadding bottom: CGFloat, height: CGFloat) {
        self.frame = CGRectMake(left, CGRectGetMinY(view.frame) - height - bottom, CGRectGetMinX(view.frame) + CGRectGetWidth(view.frame) - left, height)
    }

    func alignBetweenLeft(leftView: UIView, andRight rightView: UIView, matchingTopWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        var xOrigin: CGFloat = CGRectGetMaxX(leftView.frame) + leftAndRight
        self.frame = CGRectMake(xOrigin, CGRectGetMinY(leftView.frame), CGRectGetWidth(self.superview!.frame) - xOrigin - (CGRectGetWidth(self.superview!.frame) - CGRectGetMinX(rightView.frame)) - leftAndRight, height)
    }

    func alignBetweenLeft(leftView: UIView, andRight rightView: UIView, matchingCenterWithLeftAndRightPadding leftAndRight: CGFloat, height: CGFloat) {
        var xOrigin: CGFloat = CGRectGetMaxX(leftView.frame) + leftAndRight
        self.frame = CGRectMake(xOrigin, CGRectGetMidY(leftView.frame) - (height / 2.0), CGRectGetWidth(self.superview!.frame) - xOrigin - (CGRectGetWidth(self.superview!.frame) - CGRectGetMinX(rightView.frame)) - leftAndRight, height)
    }

    func alignBetweenTop(topView: UIView, andBottom bottomView: UIView, matchingLeftWithTopAndBottomPadding topAndBottom: CGFloat, width: CGFloat) {
        var yOrigin: CGFloat = CGRectGetMaxY(topView.frame) + topAndBottom
        self.frame = CGRectMake(CGRectGetMinX(topView.frame), CGRectGetMaxY(topView.frame) + topAndBottom, width, CGRectGetHeight(self.superview!.frame) - yOrigin - (CGRectGetHeight(self.superview!.frame) - CGRectGetMinY(bottomView.frame)) - topAndBottom)
    }

    func alignBetweenTop(topView: UIView, andBottom bottomView: UIView, centeredWithLeftAndRightPadding leftAndRight: CGFloat, topAndBottomPadding topAndBottom: CGFloat) {
        self.frame = CGRectMake(leftAndRight, CGRectGetMaxY(topView.frame) + topAndBottom, CGRectGetWidth(self.superview!.frame) - (2 * leftAndRight), CGRectGetMinY(bottomView.frame) - CGRectGetMaxY(topView.frame) - (2 * topAndBottom))
    }

    //Mark: Anything Referencing Doubles Below is My Stupid Fixes. Not required, and likely needing optimization.

    func groupHorizontally(views: [UIView], centeredUnderView view: UIView, topPadding top: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {

        var space:Double = Double(spacing);
        var count:Double = Double(views.count);
        var frameWidth:Double = Double(CGRectGetWidth(self.frame));
        var maxWidth = Double(count) * Double(width);
        var xO: Double = (frameWidth - (maxWidth) - ((count - 1) * space)) / 2.0

        var xOrigin:CGFloat = CGFloat(xO);

        for subview: UIView in views {
            subview.frame = CGRectMake(xOrigin, CGRectGetMaxY(view.frame) + top, width, height)
            xOrigin += width + spacing
        }
    }

    func groupHorizontally(subviews: [UIView], fillingWidthAndHeightWithTopAndBottomPadding topAndBottom: CGFloat, spacing: CGFloat) {

        var top:Double = Double(topAndBottom);
        var space:Double = Double(spacing);
        var subviewCount:Double = Double(subviews.count)
        var frameWidth:Double = Double(CGRectGetWidth(self.frame));
        var frameHeight:Double = Double(CGRectGetHeight(self.frame));
        var w: Double = (frameWidth - ((subviewCount + 1) * space)) / subviewCount
        var h: Double = frameHeight - (2 * top)

        var xOrigin: CGFloat = spacing
        var width:CGFloat = CGFloat(w);
        var height:CGFloat = CGFloat(h);

        for subview: UIView in subviews {
            subview.frame = CGRectMake(xOrigin, topAndBottom, width, height)
            xOrigin += width + spacing
        }
    }

    func groupHorizontally(views: [UIView], fillingHeightWithLeftPadding left: CGFloat, spacing: CGFloat, topAndBottomPadding topAndBottom: CGFloat, width: CGFloat) {
        var xOrigin: CGFloat = left
        var height: CGFloat = CGRectGetHeight(self.frame) - (2 * topAndBottom)
        for subview: UIView in views {
            subview.frame = CGRectMake(xOrigin, topAndBottom, width, height)
            xOrigin += width + spacing
        }
    }


    func groupVertically(subviews: [UIView], inUpperRightWithRightPadding right: CGFloat, topPadding top: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {
        var yOrigin: CGFloat = top
        for view: UIView in subviews {
            view.frame = CGRectMake(CGRectGetWidth(self.frame) - width - right, yOrigin, width, height)
            yOrigin += height + spacing
        }
    }

    func groupVertically(subviews: [UIView], centerRightWithRightPadding right: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {

        var frameHeight:Double = Double(CGRectGetHeight(self.frame));
        var count = Double(subviews.count);
        var h:Double = Double(height);
        var maxHeight:Double = Double(count * h);
        var space:Double = Double(spacing);
        var yO:Double = (frameHeight - (maxHeight) - ((count - 1) * space)) / 2.0

        var yOrigin: CGFloat = CGFloat(yO);

        for view: UIView in subviews {
            view.frame = CGRectMake(CGRectGetWidth(self.frame) - width - right, yOrigin, width, height)
            yOrigin += height + spacing
        }
    }

    func groupVertically(subviews: [UIView], inLowerRightWithRightPadding right: CGFloat, bottomPadding bottom: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {


        var h:Double = Double(height);
        var b:Double = Double(bottom);
        var frameHeight:Double = Double(CGRectGetHeight(self.frame));
        var yO:Double = Double(frameHeight - h - b);

        var yOrigin: CGFloat = CGFloat(yO);
        for view: UIView in subviews {
            view.frame = CGRectMake(CGRectGetWidth(self.frame) - width - right, yOrigin, width, height)
            yOrigin -= height + spacing
        }
    }

    func groupVertically(subviews: [UIView], inUpperLeftWithLeftPadding left: CGFloat, topPadding top: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {
        var yOrigin: CGFloat = top
        for view: UIView in subviews {
            view.frame = CGRectMake(left, yOrigin, width, height)
            yOrigin += height + spacing
        }
    }

    func groupVertically(subviews: [UIView], centerLeftWithLeftPadding left: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {

        var frameHeight:Double = Double(CGRectGetHeight(self.frame));
        var count:Double = Double(subviews.count);
        var h:Double = Double(height);
        var maxHeight:Double = Double(count * h);
        var space:Double = Double(spacing);
        var yO:Double = (frameHeight - (maxHeight) - ((count - 1) * space)) / 2.0

        var yOrigin: CGFloat = CGFloat(yO);
        for view: UIView in subviews {
            view.frame = CGRectMake(left, yOrigin, width, height)
            yOrigin += height + spacing
        }
    }

    func groupVertically(subviews: [UIView], inLowerLeftWithLeftPadding left: CGFloat, bottomPadding bottom: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {
        var yOrigin: CGFloat = CGRectGetHeight(self.frame) - height - bottom
        for view: UIView in subviews {
            view.frame = CGRectMake(left, yOrigin, width, height)
            yOrigin -= height + spacing
        }
    }

    func groupVertically(subviews: [UIView], topCenterWithTopPadding top: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {
        var yOrigin: CGFloat = top
        for view: UIView in subviews {
            view.frame = CGRectMake((CGRectGetWidth(self.frame) / 2.0) - (width / 2.0), yOrigin, width, height)
            yOrigin += height + spacing
        }
    }

    func groupVertically(subviews: [UIView], centerWithSpacing spacing: CGFloat, width: CGFloat, height: CGFloat) {

        var frameHeight:Double = Double(CGRectGetHeight(self.frame));
        var count:Double = Double(subviews.count);
        var h: Double = Double(height);
        var maxHeight:Double = Double(count * h);
        var space:Double = Double(spacing);
        var yO:Double = Double((frameHeight - (maxHeight) - ((count - 1) * space)) / 2.0)

        var yOrigin: CGFloat = CGFloat(yO);
        for view: UIView in subviews {
            view.frame = CGRectMake((CGRectGetWidth(self.frame) / 2.0) - (width / 2.0), yOrigin, width, height)
            yOrigin += height + spacing
        }
    }

    func groupVertically(subviews: [UIView], bottomCenterWithBottomPadding bottom: CGFloat, spacing: CGFloat, width: CGFloat, height: CGFloat) {
        var yOrigin: CGFloat = CGRectGetHeight(self.frame) - height - bottom
        for view: UIView in subviews {
            view.frame = CGRectMake((CGRectGetWidth(self.frame) / 2.0) - (width / 2.0), yOrigin, width, height)
            yOrigin -= height + spacing
        }
    }

    func groupGrid(subviews: [UIView], fillingWidthWithColumnCount columnCount: UInt, spacing: CGFloat) {
        var currentColumn: UInt = 0
        var xOrigin: CGFloat = spacing
        var yOrigin: CGFloat = spacing

        var frameWidth:Double = Double(CGRectGetWidth(self.frame));
        var count:Double = Double(columnCount);
        var space:Double = Double(spacing);

        var s:Double = Double((frameWidth - ((count + 1) * space) / count));
        var size: CGFloat = CGFloat(s);

        var offset: CGFloat = size + spacing
        for subview: UIView in subviews {
            subview.frame = CGRectMake(xOrigin, yOrigin, size, size)
            if currentColumn == columnCount - 1 {
                currentColumn = 0
                xOrigin = spacing
                yOrigin += offset
            }
            else {
                currentColumn++
                xOrigin += offset
            }
        }
    }
}

Animations of a group or a view

Is it possible to apply animations to a group as a whole, and/or apply an animation block to a group such that each view inside will use it?

Or all views should just be treated regularly?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.