2016-10-28 7 views
0

こんにちは私はサブクラス化することによってカスタムローディングバービューを作成しようとしていますUIView。固定フレームのあるUIViewを作成し、その中に別のUIViewを作成します。内部UIViewを初期化すると、この方法で渡されたフレームoverride init(frame: CGRect)は、2つのビューの起点が異なります。私は、2つのビューを互いに重ね合わせて最初から始めることを望みます。 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

内部ビューでは、親矩形からwidthheightが必要です。 xyは、親ビューに比べてゼロでなければなりません。

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) 
} 
関連する問題