Swift에서 메소드 체인 구현
단순히 필요한 수량만 준비해도 되지만 한 번에 모든 파라미터를 사용하지 않는 경우나 라이브러리로 공개된 경우 등은 더욱 지능적으로 대응하고 싶다.
이런 상황에 대한 대처 방법 중 하나로 방법 체인에서 설정할 수 있는 방법이 있다고 생각합니다.
견본
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)
}
}
Reference
이 문제에 관하여(Swift에서 메소드 체인 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/keygx/items/e40f39fc17815ae12692텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)