2017-08-01 72 views
0

我有一個UITableView與3個單元格,最終將作爲儀表板。我正在嘗試使用KDCircularProgress來配置帶有圓形進度視圖的頂部單元格 - 我有一個UIView,我用約束定位,然後以編程方式添加循環進度對象。更新方向變化UITableViewCell子視圖約束

但是,當我將設備旋轉到風景時,進度視圖會發生變化(請參閱第一幅圖像)。我嘗試過setNeedsLayout(),layoutSubviewslayoutIfNeeded()的各種組合,但沒有運氣。

我也嘗試reloadData()willAnimateRotation(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval),這讓我略微進一步,因爲視圖正確調整大小(請參閱第二張圖片),但它創建了重複。從cellForRowAt提取方法如下:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    switch indexPath.row { 
    case 0: 
     let topCell = tableView.dequeueReusableCell(withIdentifier: "topCell", for: indexPath) as! DashboardTopTableViewCell 

     //Progress config 
     topCell.progressBar = KDCircularProgress(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: topCell.circularProgressContainer.frame.width, height: topCell.circularProgressContainer.frame.height))) 
     let colorForProgress: UIColor = UIColor(red: 69.0/255.0, green: 110.0/255.0, blue: 178.0/255.0, alpha: 0.8) 
     topCell.progressBar?.progressColors = [colorForProgress] 
     let progressAsAngle = ((percentageComplete/100)*360) 
     topCell.progressBar?.animate(toAngle: progressAsAngle, duration: 2.0, completion: nil) 
     topCell.circularProgressContainer.addSubview(topCell.progressBar!) 

     return topCell 

所以我有點卡住了 - 有什麼建議嗎?

enter image description here

在cellForRow使用addSubview

enter image description here

回答

0

避免。當單元格被重用時,這個額外添加的視圖將不會被刪除,並且在重新加載單元格時,視圖將被重疊。當重疊尺寸和位置相同時,您不會看到這種影響,但如果您在旋轉的情況下,您可以看到它。在XIb中靜態添加視圖或查看您想要的位置,而不是在cellForRowAt中查看。

但是,您可以更改cellForRow中子視圖的屬性。

如果添加子視圖中cellForRowAt你會覺得挺舉滾動時的tableView。

+0

好的,理解。當你說'在任何地方查看'添加視圖時,你有什麼想法? – Tom

+0

我想你會將DashboardTopTableViewCell作爲Storyboard或XIB中的原型單元格,您可以在其中添加。 –

+0

對不起,應該提到KDCircularProgress沒有Storyboard對象,因此我以編程方式創建它。 – Tom

相關問題