Swift에서 메소드 체인 구현

2584 단어 XcodeSwiftiOS
만약 당신이 코드를 쓰고 싶다면, 매개 변수를 건네주고, 그것은 당신을 매우 좋게 느끼게 할 것이다. 당신은 상당한 수량의 매개 변수가 필요할 것이다.
단순히 필요한 수량만 준비해도 되지만 한 번에 모든 파라미터를 사용하지 않는 경우나 라이브러리로 공개된 경우 등은 더욱 지능적으로 대응하고 싶다.
이런 상황에 대한 대처 방법 중 하나로 방법 체인에서 설정할 수 있는 방법이 있다고 생각합니다.

견본


UIVIew 생성 예제.

호출자 코드

ViewBuilder(parent: view)
    .setFrame(CGRect(x: 50, y: 50, width: 100, height: 100))
    .setBackgroundColor(UIColor.green())
    .setBorderColor(UIColor.lightGray())
    .setBorderWidth(4.0)
    .setCornerRadius(14.0)
    .build()
실행하면 이렇게 됩니다.

설치단 코드

import UIKit

public class ViewBuilder {
    private var parentView: UIView
    private var frameRect: CGRect?
    private var backgroundColor: UIColor?
    private var borderColor: UIColor?
    private var borderWidth: CGFloat?
    private var cornerRadius: CGFloat?

    public init(parent: UIView) {
        self.parentView = parent
    }

    public func setFrame(_ frameRect: CGRect) -> Self {
        self.frameRect = frameRect
        return self
    }

    public func setBackgroundColor(_ backgroundColor: UIColor) -> Self {
        self.backgroundColor = backgroundColor
        return self
    }

    public func setBorderColor(_ borderColor: UIColor) -> Self {
        self.borderColor = borderColor
        return self
    }

    public func setBorderWidth(_ borderWidth: CGFloat) -> Self {
        self.borderWidth = borderWidth
        return self
    }

    public func setCornerRadius(_ cornerRadius: CGFloat) -> Self {
        self.cornerRadius = cornerRadius
        return self
    }

    public func build() {
        let view = UIView()

        if let frameRect = frameRect {
            view.frame = frameRect
        }

        if let backgroundColor = backgroundColor {
            view.backgroundColor = backgroundColor
        }

        if let borderColor = borderColor {
            view.layer.borderColor = borderColor.cgColor
        }

        if let borderWidth = borderWidth {
            view.layer.borderWidth = borderWidth
        }

        if let cornerRadius = cornerRadius {
            view.layer.cornerRadius = cornerRadius
        }

        parentView.addSubview(view)
    }
}
  • 설정치 속성을 유지할 준비를 하세요
  • 설정값 방법을 받아들일 준비를 하세요
  • 체인을 할 수 있도록 설정값을 유지하면서 자신을 반환한다
  • 단말기 방법을 통해 파라미터가 존재하는 것을 설정한다
  • 이렇게 설치하면 돼요!

    좋은 웹페이지 즐겨찾기