uitableview - UITableViewCell - When are the bounds properly set in iOS 10 -
i want create round uiview (myview) inside uitableviewcell
prior ios 10 using func awakefromnib() that:
class mycell: uitableviewcell { @iboutlet var myview: uiview! override func awakefromnib() { super.awakefromnib() print(myview.bounds.height) myview.layer.cornerradius = myview.bounds.height/2 myview.layer.maskstobounds = true } } myview height , set 30 via autolayout constraint in storyboard.
but print(myview.bounds.height) show 1000.0 in console. corner radius instruction set radius 500 , myview disappear completely.
is uitableviewcell life cycle change in ios 10 ? function view.bounds set change in ios 10 ? how can set cornerradius half view height in ios 10 ?
here minimal projet reproduce issue
to have result close want need add in uitableviewcontroller:
override func viewdidappear(animated: bool) { super.viewdidappear(animated) tableview.reloaddata() } but i'm quite sure not optimal ...
i had same problem , found 2 ways fix it. both enforce cell layout subviews
first solution:
override func awakefromnib() { super.awakefromnib() self.setneedslayout() self.layoutifneeded() } second way:
override func tableview(_ tableview: uitableview, cellforrowat indexpath: indexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecell(withidentifier: "cell", for: indexpath) cell.setneedslayout() cell.layoutifneeded() return cell }
Comments
Post a Comment