2016-03-24 11 views
0

セルがあり、そのセルビュー内にテキストビューがあります。テキストビューでは、ボーダーボトムはEZSwiftExtensionsです。テーブルビューセルのスウィフトイオステキストビューが正しいサイズで生成されていません

問題は、最初の読み込み時に枠線が全幅ではなく、下にスクロールして枠線が上端までスクロールするときです。

どうしてですか?

するとアプリがロード:

enter image description here

下にスクロールして、トップに戻ってくる:

enter image description here

セルのXcode:

enter image description here

セルコード:

import UIKit 
import EZSwiftExtensions 

class JokeTableViewCell: UITableViewCell { 

    var item: Joke! { 
     didSet { 
      cellView.setCornerRadius(radius: 4) 
      hearthImg.image = UIImage(named: "HearthWhite") 
      starImg.image = UIImage(named: "StarWhite") 
      txtLabel.addBorderBottom(size: 1, color: UIColor.lightGrayColor()) 
      setupCell() 
     } 
    } 

    @IBOutlet weak var cellView: UIView! 
    @IBOutlet weak var authorLabel: UILabel! 
    @IBOutlet weak var txtLabel: UILabel! 
    @IBOutlet weak var hearthImg: UIImageView! 
    @IBOutlet weak var likesLabel: UILabel! 
    @IBOutlet weak var starImg: UIImageView! 
    @IBOutlet weak var scoreLabel: UILabel! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
    } 

    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 
    } 

    func setupCell() { 
     authorLabel.text = item.creator 
     if item.creator == "" { 
      authorLabel.text = "Aninomno" 
     } 
     txtLabel.text = item.text 
     if item.liked == true { 
      hearthImg.image = UIImage(named: "HearthRed") 
     } 
     if item.rated == true { 
      starImg.image = UIImage(named: "StarYellow") 
     } 
     likesLabel.text = item.likes.toString 
     scoreLabel.text = item.score.toString 
    } 

} 

常にフルサイズにする必要があります。

+1

これが起こり得るいくつかの対処法があります。スクロールする前に 'textView'サイズが期待どおりであるかどうか確認しましたか?使用しない場合は、ビューデバッガを使用してチェックします。 – Jelly

+0

長い文字列でテストしたので、全幅を表示しますが、境界線はまだ全幅ではありません。 –

+0

私の推測では、autolayoutを使用しており、制約が反映されるようにビューが更新される前に線が描かれています。私はあなたが使用しているライブラリのバグだと思うので、あなたが使っている詳細(またはいくつかのコード)を共有することができます。 – Jelly

答えて

1

addBorderBottomの実装はそれほど大きくありません。あなたはlayoutSubviewsを無効にしてそこにaddBorderBottomを使うとうまくいくはずです。しかし、このメソッドは複数回呼び出され、複数のボーダーが重ねて表示されることになります。 UIViewをサブビューとして使用し、境界線を実装することができます。これは最も簡単な解決策です。

+0

私はその解決策について考えました、私はその解決策を使用すると思います..ありがとう.. –

関連する問題