레이블이 Xcode인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Xcode인 게시물을 표시합니다. 모든 게시물 표시

2018년 11월 25일 일요일

재사용가능한 그룹뷰 만들기



PassGroupView.xib 생성하고 레이아웃 구성




PassGroupView.swift 생성

class PassGroupView: UIView {
    
    var height: CGFloat? {
        didSet {
            UIView.animate(withDuration: 0.2) {
                self.invalidateIntrinsicContentSize()
            }
        }
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.xibSetup()
    }
    
    public override var intrinsicContentSize: CGSize {
        if let height = height {
            return CGSize(width: frame.width, height: height)
        } else {
            return CGSize(width: frame.width, height: frame.height)
        }
    }
    
    private func xibSetup(){
        guard let xibName = NSStringFromClass(self.classForCoder).components(separatedBy: ".").last else { return }
        let view = Bundle.main.loadNibNamed(xibName, owner: self, options: nil)?.first as! UIView
        view.frame = self.bounds
        self.addSubview(view)
    }


}


PassGroupView.xib 에서 File's Owner를 PassGroupView로 지정





PassGroupView를 사용하고싶은 ViewController에 배치.




PassGroupView의 높이를 지정하지않고 Placeholder로 설정함.





뷰컨트롤러에서 PassGroupView의 intrinsicContentSize 수정.

class ViewController: UIViewController {

    @IBOutlet weak var passGroupView: PassGroupView!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }

    @IBAction func actionFold(_ sender: Any) {
        passGroupView.height = 41
    }
    
    @IBAction func actionUnfold(_ sender: Any) {
        passGroupView.height = 82
    }

}



실행결과 :

     






https://medium.com/zenchef-tech-and-product/how-to-visualize-reusable-xibs-in-storyboards-using-ibdesignable-c0488c7f525d



서브뷰들을 비율대로 배치하는 방법

1. UIView 안에서





서브뷰의 넓이를 부모뷰의 넓이로 지정하고 multiplier로 비율을 조정한면된다.


2. UIStackView 안에서











2018년 10월 30일 화요일

xcode 버젼 스위칭


현재 xcode 버젼 보기

xcode-select --print-path



스위칭하기

sudo xcode-select --switch /Applications/Xcode9.app/Contents/Developer