Skip to content

Instantly share code, notes, and snippets.

@arashkashi
Created January 2, 2017 17:12
Show Gist options
  • Save arashkashi/69e2d4de495ece1b87a2225df65be592 to your computer and use it in GitHub Desktop.
Save arashkashi/69e2d4de495ece1b87a2225df65be592 to your computer and use it in GitHub Desktop.
three uniformly spaced labels
//
// MyView.swift
// TestPopover
//
// Created by Arash Kashi on 1/2/17.
// Copyright © 2017 Arash Kashi. All rights reserved.
//
import Foundation
import UIKit
@IBDesignable
class MyView: UIView {
lazy var leftLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
label.text = "leftleftleftleft"
return label
}()
lazy var middleLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
label.text = "middle"
return label
}()
lazy var rightLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
label.text = "right"
return label
}()
private var leftEdgeGuide: UILayoutGuide = UILayoutGuide()
private var leftMiddleGuide: UILayoutGuide = UILayoutGuide()
private var rightMiddleGuide: UILayoutGuide = UILayoutGuide()
private var rightEdgeGuide: UILayoutGuide = UILayoutGuide()
override func layoutSubviews() {
super.layoutSubviews()
addSubview(leftLabel)
addSubview(middleLabel)
addSubview(rightLabel)
[leftEdgeGuide,
leftMiddleGuide,
rightMiddleGuide,
rightEdgeGuide].forEach { self.addLayoutGuide($0) }
leftEdgeGuide.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
leftEdgeGuide.trailingAnchor.constraint(equalTo: leftLabel.leadingAnchor).isActive = true
leftLabel.trailingAnchor.constraint(equalTo: leftMiddleGuide.leadingAnchor).isActive = true
leftMiddleGuide.trailingAnchor.constraint(equalTo: middleLabel.leadingAnchor).isActive = true
middleLabel.trailingAnchor.constraint(equalTo: rightMiddleGuide.leadingAnchor).isActive = true
rightMiddleGuide.trailingAnchor.constraint(equalTo: rightLabel.leadingAnchor).isActive = true
rightLabel.trailingAnchor.constraint(equalTo: rightEdgeGuide.leadingAnchor).isActive = true
rightEdgeGuide.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
leftEdgeGuide.widthAnchor.constraint(equalTo: leftMiddleGuide.widthAnchor).isActive = true
leftMiddleGuide.widthAnchor.constraint(equalTo: rightMiddleGuide.widthAnchor).isActive = true
rightMiddleGuide.widthAnchor.constraint(equalTo: rightEdgeGuide.widthAnchor).isActive = true
leftLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
rightLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
middleLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
self.setNeedsLayout()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment