2016-10-28 12 views
0

안녕 하위 클래스 UIView 하위로드하여 만드는 것을 시도하고있다. 고정 프레임으로 UIView을 만들고 그 안에 또 다른 UIView을 생성하고 싶습니다. 내부 UIView을 초기화 할 때이 방법으로 전달 된 프레임이 override init(frame: CGRect) 인 경우 두보기의 출처가 다릅니다. 두 개의보기를 서로 위에 놓아서 시작하는 것이 좋습니다. UploadBar당신은 어떻게 서브 프레임 UIView 및 다른 UIView 내에서 동일한 프레임으로 추가 할

let uploadBar = UploadBar(frame: CGRect(x: 40, y: 40, width: 400, height: 40)) 
view.addSubview(uploadBar) 

서브 클래스 UploadBar

import UIKit 

class UploadBar: UIView { 

    var innerBar: UIView! 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     backgroundColor = UIColor.white 

     innerBar = UIView(frame: frame) 
     innerBar.backgroundColor = UI.customBlue() 
     addSubview(innerBar) 

    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func setLoadingPercentage(percent: Double) { 
     // change innerBar's frame and redraw 
    } 




} 

만들기

: 나는 또한 다음은이 uploadBar.setLoadingPercentage(percent: 53.5)

를 호출하여 innerBar를 업데이트 할 수 있도록하려는 것은 코드 The White bar is the view that I am subclassing the blue bar is <code>innerBar</code>

답변

1

내부보기의 경우 부모 rect의 widthheight 만 있으면됩니다. xy은 상위보기와 관련하여 0이어야합니다.

override init(frame: CGRect) { 
    super.init(frame: frame) 

    backgroundColor = UIColor.white 

    let innerRect = CGRect(x: 0, y: 0, width: frame.width, height: frame.height) 

    innerBar = UIView(frame: innerRect) 
    innerBar.backgroundColor = UI.customBlue() 
    addSubview(innerBar) 
}