This framework is just an extension on UIView that makes my day easier.
This is written in Swift 4, works with macOS, iOS, watchOS, and tvOS.
You can install this library with Carthage, or Swift's package manager
Add this line to you Cartfile
:
github "Chandlerdea/UIKitHelpers"
Run carthage update
and then add the created framework in $(SRCROOT)/Carthage/build/iOS
to the Embedded Binaries section of you project.
I'm having trouble linting the cocoapod, so cocoapods support isn't available just yet. I'll be adding it as soon as I figure out the issue.
In your Packages.swift file, add this code
import PackageDescription
let package = Package(
url: "https://github.com/Chandlerdea/UIKitHelpers/UIKitHelpers.swift"
majorVersion: 1
)
There is also a protocol ReusableViewType
which looks like this:
public protocol ReusableViewType {
static var reuseIdentifier: String { get }
}
extension ReusableViewType where Self: NSObject {
static public var reuseIdentifier: String {
let classString = NSStringFromClass(self)
if classString.contains(".") {
return classString.components(separatedBy: ".")[1]
} else {
return classString
}
}
}
UITableViewCell
, UICollectionViewCell
, UITableViewHeaderFooterView
, and UICollectionReusableView
all conform to this protocol. I mostly use this with registering cells, so I can register cells with string representations of their name, like this:
tableView.register(SomeCell.self, forCellReuseIdentifier: SomeCell.reuseIdentifier)
The extension on UIView
has some convenient methods for common UIKit
usecases. For example:
constraint(equalTo anchor: NSLayoutDimension, constant: CGFloat, priority: CGFloat) -> NSLayoutConstraint
constraint(equalTo anchor: NSLayoutXAxisAnchor, constant: CGFloat, priority: CGFloat) -> NSLayoutConstraint
constraint(equalTo anchor: NSLayoutYAxisAnchor, constant: CGFloat, priority: CGFloat) -> NSLayoutConstraint
class func loadFromNib<T: UIView>() -> T
activateAllSideAnchors(relativeToMargins: Bool! = false, padding: UIEdgeInsets! = nil, priorities: UIEdgeInsets! = nil)
There are a few others for small things like finding subviews, andding more than one subview at once, and other stuff. They are small solutions to ways I have found Apple's APIs to be slightly lacking, or things that I have found myself having to do a lot across projects. If you have any critiques or enhancements you think could make this better, please open a PR. I would love to what others have come up with!
link |
Stars: 2 |
Last commit: 3 years ago |
First release
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics