programing

UIView의 사용자 지정 테두리 색을 프로그래밍 방식으로 설정하는 방법은 무엇입니까?

lastmoon 2023. 8. 5. 10:55
반응형

UIView의 사용자 지정 테두리 색을 프로그래밍 방식으로 설정하는 방법은 무엇입니까?

저는 스위프트에서 UIView의 커스텀 테두리 색상을 프로그래밍 방식으로 설정하려고 합니다.

Swift 2.0+를 사용하는 경우

self.yourView.layer.borderWidth = 1
self.yourView.layer.borderColor = UIColor(red:222/255, green:225/255, blue:227/255, alpha: 1).cgColor

Swift 4에서는 아래 코드를 사용하여 테두리 색과 너비를 UIControls로 설정할 수 있습니다.

let yourColor : UIColor = UIColor( red: 0.7, green: 0.3, blue:0.1, alpha: 1.0 )
yourControl.layer.masksToBounds = true
yourControl.layer.borderColor = yourColor.CGColor
yourControl.layer.borderWidth = 1.0

< Swift 4, 아래 코드를 사용하여 UIView의 테두리 너비와 테두리 색을 설정할 수 있습니다.

yourView.layer.borderWidth = 1

yourView.layer.borderColor = UIColor.red.cgColor

@IBDesignable@IBInspectable을 사용하여 동일한 작업을 수행합니다.

인터페이스 빌더에서 재사용 가능하고 쉽게 수정할 수 있으며 변경 사항이 스토리보드에 즉시 반영됩니다.

스토리보드의 개체를 특정 클래스에 맞게 구성

코드 조각:

@IBDesignable
class CustomView: UIView{

@IBInspectable var borderWidth: CGFloat = 0.0{

    didSet{

        self.layer.borderWidth = borderWidth
    }
}


@IBInspectable var borderColor: UIColor = UIColor.clear {

    didSet {

        self.layer.borderColor = borderColor.cgColor
    }
}

override func prepareForInterfaceBuilder() {

    super.prepareForInterfaceBuilder()
}

}

Interface Builder에서 쉽게 수정할 수 있습니다.

Interface Builder

모든 UIView eg에 사용할 확장자를 작성할 수 있습니다.UIButton, UIBabel, UIImageView 등.당신은 당신의 요구에 따라 나의 다음 방법을 사용자 정의할 수 있지만, 나는 그것이 당신에게 잘 될 것이라고 생각합니다.

extension UIView{

    func setBorder(radius:CGFloat, color:UIColor = UIColor.clearColor()) -> UIView{
        var roundView:UIView = self
        roundView.layer.cornerRadius = CGFloat(radius)
        roundView.layer.borderWidth = 1
        roundView.layer.borderColor = color.CGColor
        roundView.clipsToBounds = true
        return roundView
    }
}

용도:

btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)

Swift 5.2, UIView+확장

extension UIView {
    public func addViewBorder(borderColor:CGColor,borderWith:CGFloat,borderCornerRadius:CGFloat){
        self.layer.borderWidth = borderWith
        self.layer.borderColor = borderColor
        self.layer.cornerRadius = borderCornerRadius

    }
}

이 확장명을 사용했습니다.

yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)

swift 3

func borderColor(){

    self.viewMenuItems.layer.cornerRadius = 13
    self.viewMenuItems.layer.borderWidth = 1
    self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}

우리는 그것을 위한 방법을 만들 수 있습니다.그냥 사용하세요.

public func createBorderForView(color: UIColor, radius: CGFloat, width: CGFloat = 0.7) {
    self.layer.borderWidth = width
    self.layer.cornerRadius = radius
    self.layer.shouldRasterize = false
    self.layer.rasterizationScale = 2
    self.clipsToBounds = true
    self.layer.masksToBounds = true
    let cgColor: CGColor = color.cgColor
    self.layer.borderColor = cgColor
}

스위프트 3.0

       groundTrump.layer.borderColor = UIColor.red.cgColor

코드를 입력합니다.viewDidLoad()

self.view.layer.borderColor = anyColor().CGColor

설정할 수 있습니다.Color와 함께RGB

func anyColor() -> UIColor {
    return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}

에 대해 알아보기CALayer안에UIKit

빠른 3.0

self.uiTextView.layer.borderWidth = 0.5
    self.txtItemShortDes.layer.borderColor = UIColor(red:205.0/255.0, green:205.0/255.0, blue:205.0/255.0, alpha: 1.0).cgColor

스위프트 5*

항상 뷰 확장을 사용하여 뷰 모서리를 둥글게 만들고 테두리 색과 너비를 설정하는 것이 제게 가장 편리한 방법이었습니다. 이 코드를 복사하여 붙여넣고 속성 관리자에서 이러한 속성을 제어하면 됩니다.

extension UIView {
    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
        }
    }
    
    @IBInspectable
    var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
    }
    
    @IBInspectable
    var borderColor: UIColor? {
        get {
            if let color = layer.borderColor {
                return UIColor(cgColor: color)
            }
            return nil
        }
        set {
            if let color = newValue {
                layer.borderColor = color.cgColor
            } else {
                layer.borderColor = nil
            }
        }
    }
}

만약 당신이 레이어를 다루고 있다면, 당신은 이렇게 테두리를 줄 수 있습니다... 만약 그렇지 않다면, 당신은 자신과 같은 원하는 레이어를 진실로 만들어야 할지도 모릅니다.anytextField.wantslayer = true

var BackgroundColor : CGColor = UIColor.blue.cgColor
subLayer.shadowColor = self.BackgroundColor
subLayer.borderColor = self.BackgroundColor
subLayer.borderWidth = CGFloat(4)

또는 macOS용 CA 계층 확장을 사용할 수 있습니다.

func addBorder(edge: NSRectEdge, color: NSColor, thickness: CGFloat) {

    let border = CALayer()

    switch edge {
    case NSRectEdge.maxY:
        border.frame = CGRect(x: 0, y: 0, width: frame.width, height: thickness)

    case NSRectEdge.minY:
        border.frame = CGRect(x:0, y: frame.height - thickness, width: frame.width, height:thickness)

    case NSRectEdge.minX:
        border.frame = CGRect(x:0, y:0, width: thickness, height: frame.height)

    case NSRectEdge.maxX:
        border.frame = CGRect(x: frame.width - thickness, y: 0, width: thickness, height: frame.height)

    default: do {}
    }

    border.backgroundColor = color.cgColor

    addSublayer(border)
 }

그 용법은 다음과 같습니다.

subLayer.addBorder(edge: <#T##NSRectEdge#>, color: <#T##NSColor#>, thickness: <#T##CGFloat#>)

언급URL : https://stackoverflow.com/questions/29700919/how-to-set-the-custom-border-color-of-uiview-programmatically

반응형