私はカスタムテーブルビューセルをデザインします。私がTableViewをスクロールすると、Cell Viewは最初と最後のセルのx位置を移動します。なぜこの問題が起こったのか?UITableViewCell UIViewアライメントの問題
私は問題を理解するためにいくつかのコードとイメージを入れました。
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CreateQuestionViewCell
//let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CreateQuestionViewCell
//let subview = cell.viewWithTag(1)!
//let textDetail = cell.viewWithTag(2) as! UILabel
cell.quesLbl.text = ((arrTableData[indexPath.row] as! Question).que).convertHTMLtoSymbols()
//let edit = cell.viewWithTag(3) as? UIButton
cell.editBtn.tag = indexPath.row
cell.editBtn.addTarget(self, action: #selector(EditButActions(sender:)), for: .touchUpInside)
//let deleteBut = cell.viewWithTag(4) as? UIButton
cell.deleteBtn.tag = indexPath.row
cell.deleteBtn.addTarget(self, action: #selector(deleteButActions(sender:)), for: .touchUpInside)
if NotEditable {
cell.editBtn.isHidden = true
cell.deleteBtn.isHidden = true
} else {
cell.editBtn.isHidden = false
cell.deleteBtn.isHidden = false
}
cell.quesLbl.font = UIFont(name: "Roboto-Regular", size: 14)!
let desiredWidth: CGFloat = UIScreen.main.bounds.size.width - 60
let size: CGSize = cell.quesLbl.sizeThatFits(CGSize.init(width: desiredWidth, height: CGFloat.greatestFiniteMagnitude))
cell.quesLbl.numberOfLines = 0
cell.quesLbl.lineBreakMode = NSLineBreakMode.byWordWrapping
if NotEditable {
cell.subview.frame = CGRect.init(x: 10, y: 10, width: Int(UIScreen.main.bounds.width - 40), height: Int(20 + size.height))
} else {
cell.subview.frame = CGRect.init(x: 10, y: 10, width: Int(UIScreen.main.bounds.width - 40), height: Int(50 + size.height))
}
cell.subview.layer.cornerRadius = 2.0
cell.subview.layer.borderWidth = 1.0
cell.subview.layer.borderColor = UIColor.clear.cgColor
// SubView.layer.masksToBounds = true;
cell.subview.layer.shadowColor = UIColor.init(red: 200/255, green: 200/255, blue: 200/255, alpha: 1).cgColor
cell.subview.layer.shadowOffset = CGSize.init(width: 0.5, height: 0.5)
cell.subview.layer.shadowRadius = 2.0
cell.subview.layer.shadowOpacity = 1.0
cell.subview.layer.masksToBounds = false
//cell.subview.layer.shadowPath = UIBezierPath(roundedRect: cell.subview.bounds, cornerRadius: cell.subview.layer.cornerRadius).cgPath
cell.layoutIfNeeded()
return cell
}
どこからテーブルビューをリロードしていますか?あなたはメインスレッドからそれをやっていますか? –
@BadhanGanesh返事をありがとう。はい、私はメインスレッドにリロードしますが、私が常に上下にスクロールすると、セル内のx位置が少し移動します。画像を見てください。 :) – ilesh