Skip to content

Instantly share code, notes, and snippets.

@nbasham
Last active September 5, 2017 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nbasham/84ce5b1fdec949115999b738217bde65 to your computer and use it in GitHub Desktop.
Save nbasham/84ce5b1fdec949115999b738217bde65 to your computer and use it in GitHub Desktop.
Lets you adjust individual property of a UIView's frame. Based on the category UIView+position.m by Tyler Neylon.
import UIKit
public extension UIView {
public var top: CGFloat {
get { return self.frame.origin.y }
set { self.frame.origin.y = newValue }
}
public var left: CGFloat {
get { return self.frame.origin.x }
set { self.frame.origin.x = newValue }
}
// swiftlint:disable:next identifier_name
public var x: CGFloat {
get { return self.frame.origin.x }
set { self.frame.origin.x = newValue }
}
// swiftlint:disable:next identifier_name
public var y: CGFloat {
get { return self.frame.origin.y }
set { self.frame.origin.y = newValue }
}
public var width: CGFloat {
get { return self.frame.size.width }
set { self.frame.size.width = newValue }
}
public var height: CGFloat {
get { return self.frame.size.height }
set { self.frame.size.height = newValue }
}
public var right: CGFloat {
get { return self.frame.origin.x + self.width }
set { self.frame.origin.x = newValue - self.width }
}
public var bottom: CGFloat {
get { return self.frame.origin.y + self.height }
set { self.frame.origin.y = newValue - self.height }
}
public var centerX: CGFloat {
get { return self.center.x }
set { self.center = CGPoint(x: newValue, y: self.centerY) }
}
public var centerY: CGFloat {
get { return self.center.y }
set { self.center = CGPoint(x: self.centerX, y: newValue) }
}
public var origin: CGPoint {
set { self.frame.origin = newValue }
get { return self.frame.origin }
}
public var size: CGSize {
set { self.frame.size = newValue }
get { return self.frame.size }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment