0

セクションのリロード時にカスタム セクション ヘッダー/フッター ビューを点滅から取得する方法を知っている人はいますか?

Section(header:"",footer:"") {section in
    section.tag = "main"
    var header = HeaderFooterView<GenericSection>(HeaderFooterProvider.Class)
    header.onSetupView = { v,s in
        v.label.frame = CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width - 30, height: 20 )
        v.label.text = self.row.title
        v.label.numberOfLines = 0
        v.label.textAlignment = .Justified
        v.label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
        v.label.textColor = UIColor(red:0.47, green:0.47, blue:0.49, alpha:1.0)
        v.label.frame = v.label.bounds
        v.label.sizeToFit()
        v.bounds = CGRect(x: -8, y: -8, width: v.label.bounds.width - 15, height: v.label.bounds.height + 25)
    }
    section.header = header
    section.footer = nil
}

Section(header:"test",footer:"test2")がヘッダービューを使用すると、私が望むフォームの変更で点滅することはありません。ただし、カスタム マージンを使用してヘッダーにアイコンを追加しているため、ヘッダー/フッターとして機能するカスタム ビューが必要です。これを解決する .onSetupView に設定していないプロパティはありますか?

4

1 に答える 1

0

あなたの問題は、headerビューのリロードを何度も繰り返し、フレームを何度も調整することに関連しているため、boolこのような変数を追加するだけでこれを修正できます

問題あり ここに画像の説明を入力

問題なしここに画像の説明を入力

class GenericSection: UIView {
    let label = UILabel()
    var positioned = false
    override init(frame: CGRect) {
        super.init(frame: frame)
        label.frame = CGRect(x: 0,y: 0,width: self.bounds.size.width - 30, height: 40)
        self.addSubview(label)
    }

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

その後

form +++ Section(header:"",footer:"") {section in
            section.tag = "main"
            var header = HeaderFooterView<GenericSection>(HeaderFooterProvider.Class)
            header.onSetupView = { v,s in
                if(!v.positioned)
                {
                v.layer.borderColor = UIColor.redColor().CGColor
                v.layer.borderWidth = 1
                v.label.frame = CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width - 30, height: 20 )
                v.label.text = "Testing Custom Header without issue"
                v.label.numberOfLines = 0
                v.label.textAlignment = .Justified
                v.label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
                v.label.textColor = UIColor(red:0.47, green:0.47, blue:0.49, alpha:1.0)
                v.label.frame = v.label.bounds
                v.label.sizeToFit()
                v.bounds = CGRect(x: -8, y: -8, width: v.label.bounds.width - 15, height: v.label.bounds.height + 25)
                v.setNeedsLayout()
                v.setNeedsDisplay()
                v.positioned = true
                }
            }
            section.header = header
            section.footer = nil
        }

これがお役に立てば幸いです、よろしく

于 2016-06-29T14:15:49.493 に答える