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에서 쉽게 수정할 수 있습니다.
모든 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
'programing' 카테고리의 다른 글
도커 파일에서 도커 이미지로 폴더를 복사하는 방법은 무엇입니까? (0) | 2023.08.05 |
---|---|
명령행별 pytest에서 인수를 전달하는 방법 (0) | 2023.08.05 |
요청이 실패했거나 서비스가 적시에 응답하지 않았습니까? (0) | 2023.08.05 |
RAW(16) 열에 UUID를 삽입하는 방법 (0) | 2023.08.05 |
내 SQL 표준 시간대 변경? (0) | 2023.08.05 |