ApplyStyleKit is a library that applies styles to UIKit using Swifty Method Chain.
Normally, when applying styles to UIView etc.,it is necessary to write propertyName and equal operator many times.
With ApplyStyleKit, you can comfortably apply style to your code.
Like this:
sampleLabel.applyStyle
.backgroundColor(.yellow)
.text("sample label")
.textAlignment(.center)
.textColor(.green)
.font(.boldSystemFont(ofSize: 30.0))
.numberOfLines(0)
- iOS 9.0 or later
- Swift 4.2
- Xcode 10
github "shindyu/ApplyStyleKit"
target '<Your Target Name>' do
pod 'ApplyStyleKit'
end
import ApplyStyleKit
class ViewController: UIViewController {
let sampleView = UIView()
let sampleLabel = CustomLabel()
override func viewDidLoad() {
super.viewDidLoad()
// Apply style
sampleView.applyStyle
.backgroundColor(.red)
.alpha(0.5)
// When applying to layer
sampleView.layer.applyStyle
.cornerRadius(10)
.borderColor(.gray)
.borderWidth(2)
// Of course, you can apply it if you inherit UIView etc.
sampleLabel.applyStyle
.text("Of course, you can apply it if you inherit UIView etc.")
.textAlignment(.center)
.textColor(.green)
.font(.boldSystemFont(ofSize: 30.0))
.numberOfLines(0)
}
}
You can also create your own applyStyleMethod.
To be able to define the extension, the access modifier of base
which is a property of StyleObject
is public.
example:
extension StyleObject where Base: UIView {
@discardableResult func specialStyle() -> StyleObject {
base.backgroundColor = .red
base.layer.cornerRadius = 10
return self
}
}
QuartzCore
- ✅ CALayer
UIKit
- ✅ UIView
- ✅ UILabel
- ✅ UIButton
- ✅ UIImageView
- ✅ UISwitch
- ✅ UIControl
- ✅ UIStackView
- ✅ UISlider
- ✅ UITableView
- ✅ UICollectionView
ApplyStyleKit intends to target methods with no return value and properties with setter. Due to the nature of ApplyStyleKit, I think that returning types other than StyleObject should be avoided.
Please make an issue or pull request if you have any request.
Bug reports, Documentation, or tests, are always welcome as well!😂
ApplyStyleKit is available as open source under the terms of the MIT License.