【Swift3.0】UIView의 지정된 변에만 테두리를 붙인다

11639 단어 XcodeSwift3.0

UIView의 상단에만 테두리를 붙이고 싶다.



TabBar를 자작의 UIView로 구현할 기회가 있어, View의 상선만을 붙이고 싶었습니다만, 별로 조사해도 나오지 않았으므로 써 둡니다. 덧붙여서 이런 느낌의 것을 상정 (보기 힘들지만 상변만 테두리선이 붙어 있습니다).


코드



ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.view.backgroundColor = UIColor.cyan

        //UIViewを作成
        let myView = UIView()
        myView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width/2, height: self.view.frame.height/2)
        myView.center = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY)
        myView.backgroundColor = .white
        self.view.addSubview(myView)

        //上線のCALayerを作成
        let topBorder = CALayer()
        topBorder.frame = CGRect(x: 0, y: 0, width: myView.frame.width, height: 1.0)
        topBorder.backgroundColor = UIColor.lightGray.cgColor

        //作成したViewに上線を追加
        myView.layer.addSublayer(topBorder)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

CALayer에서 테두리를 생성하여 View에 올리는 방법. CALayer.frame의 width 혹은 height로 선의 굵기를 조정이라고 하는 형태(좌변인가 우변인가, 상변인가 하변인가로 바뀐다). 덧붙여서 아래와 같이 좌변의 선을 추가하면 붙이고 싶은 곳에 붙일 수 있다.


ViewController.swift
        //UIViewを作成
        let myView = UIView()
        myView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width/2, height: self.view.frame.height/2)
        myView.center = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY)
        myView.backgroundColor = .white
        self.view.addSubview(myView)

        //上線のCALayerを作成
        let topBorder = CALayer()
        topBorder.frame = CGRect(x: 0, y: 0, width: myView.frame.width, height: 1.0)
        topBorder.backgroundColor = UIColor.lightGray.cgColor

        //左線のCALayerを作成
        let leftBorder = CALayer()
        leftBorder.frame = CGRect(x: 0, y: 0, width: 1.0, height:myView.frame.height)
        leftBorder.backgroundColor = UIColor.lightGray.cgColor

        /*
        //下線のCALayerを作成
        let bottomBorder = CALayer()
        bottomBorder.frame = CGRect(x: 0, y: myView.frame.height, width: myView.frame.width, height:1.0)
        bottomBorder.backgroundColor = UIColor.lightGray.cgColor

        //右線のCALayerを作成
        let rightBorder = CALayer()
        rightBorder.frame = CGRect(x: myView.frame.width, y: 0, width: 1.0, height:myView.frame.height)
        rightBorder.backgroundColor = UIColor.lightGray.cgColor
        */

        //作成したViewに上線を追加
        myView.layer.addSublayer(topBorder)

        //作成したViewに左線を追加
        myView.layer.addSublayer(leftBorder)


요약



우선 View의 Layer를 타면 좋지 않다고 하는 것으로 구현해 보면 할 수 있었으므로 이것으로 하고 있습니다만, 무엇인가 다른 좋은 방법이 있으면 가르쳐 주셨으면 한다.

좋은 웹페이지 즐겨찾기