diff --git a/Framezilla.podspec b/Framezilla.podspec index 35bd0d7..7a66bd0 100644 --- a/Framezilla.podspec +++ b/Framezilla.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "Framezilla" - spec.version = "2.8.0" + spec.version = "2.9.0" spec.summary = "Comfortable syntax for working with frames." spec.homepage = "https://github.com/Otbivnoe/Framezilla" diff --git a/Sources/Maker.swift b/Sources/Maker.swift index e58ea84..539b3d9 100644 --- a/Sources/Maker.swift +++ b/Sources/Maker.swift @@ -8,6 +8,11 @@ import Foundation +public enum Size { + case width + case height +} + enum HandlerPriority: Int { case high case middle @@ -696,7 +701,36 @@ public final class Maker { } // MARK: Low priority - + + /// Set up the corner radius value. + /// + /// - returns: `Maker` instance for chaining relations. + + @discardableResult public func cornerRadius(_ cornerRadius: Number) -> Maker { + let handler = { [unowned self] in + self.view.layer.cornerRadius = cornerRadius.value + } + handlers.append((.low, handler)) + return self + } + + /// Set up the corner radius value as either a half-width or half-height. + /// + /// - returns: `Maker` instance for chaining relations. + + @discardableResult public func cornerRadius(byHalf type: Size) -> Maker { + let handler = { [unowned self] in + if case Size.width = type { + self.view.layer.cornerRadius = self.newRect.width / 2 + } + else { + self.view.layer.cornerRadius = self.newRect.height / 2 + } + } + handlers.append((.low, handler)) + return self + } + /// Creates center relation to superview. /// /// Use this method when you want to center view by both axis relativity superview. diff --git a/Tests/MakerTests.swift b/Tests/MakerTests.swift index c437e16..d9d7719 100644 --- a/Tests/MakerTests.swift +++ b/Tests/MakerTests.swift @@ -414,4 +414,35 @@ class MakerTests: BaseTest { XCTAssertEqual(label.bounds.width, 30) XCTAssertEqual(label.bounds.height, 0) } + + /* corner radius */ + + func testThat_cornerRadius_correctlyConfigures() { + let view = UIView() + + view.configureFrame { maker in + maker.cornerRadius(100) + } + XCTAssertEqual(view.layer.cornerRadius, 100) + } + + func testThat_cornerRadiusWithHalfWidth_correctlyConfigures() { + let view = UIView() + + view.configureFrame { maker in + maker.width(100) + maker.cornerRadius(byHalf: .width) + } + XCTAssertEqual(view.layer.cornerRadius, 50) + } + + func testThat_cornerRadiusWithHalfHeight_correctlyConfigures() { + let view = UIView() + + view.configureFrame { maker in + maker.height(100) + maker.cornerRadius(byHalf: .height) + } + XCTAssertEqual(view.layer.cornerRadius, 50) + } }