在ScrollView

时间:2017-07-29 00:13:05

标签: ios swift uiview uiscrollview

我正在尝试动态加载scrollView一个customView。我已经创建了一个自定义视图(.xib),并将其添加为我在for循环中创建的新UIView的子视图。它只在最后一个for循环中添加了subView。

我不确定这是否是最有效的方法,但我无法想象其他任何方式。我试着制作副本,但它复制了相同的副本。

我找了类似的帖子,但我没找到。

我想这很容易,但我是新编码。

这是我的代码。

由于 Picture of problem I am facing

import UIKit

class ScrollTableViewCell: UITableViewCell  {


@IBOutlet weak var scrollView: UIScrollView!

let customView:ViewForScrollView = (Bundle.main.loadNibNamed("ViewForScrollView", owner: self, options: nil)!.first as? ViewForScrollView)!

override func awakeFromNib() {
    super.awakeFromNib()

    self.scrollView.delegate = self
    tileView(weatherHours: 4)


}


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

    // Configure the view for the selected state
}

func tileView(weatherHours : Int){
    let tileWidth : CGFloat = 60
    let tileHeight : CGFloat = 60
    let marginX : CGFloat = 15
    let viewOriginX : CGFloat = 15
    let viewOriginY : CGFloat = 5
    var padding : CGFloat = 0

    for (index) in 1...weatherHours{

        customView.label.text = "\(index)"
        let aView = UIView()
        aView.backgroundColor = UIColor.red
        aView.addSubview(customView)

        aView.frame = CGRect(x: padding + marginX, y: viewOriginY, width: tileWidth , height: tileHeight)
        padding = padding + tileWidth + 15
        scrollView.addSubview(aView)

    }
    let scrollViewWidth : CGFloat = tileWidth + (padding) + 15
    scrollView.contentSize = CGSize(width: scrollViewWidth , height: 80)
    }

}

extension ScrollTableViewCell : UIScrollViewDelegate{

}

extension UIView{
    func copyView() -> UIView{
        return (NSKeyedUnarchiver.unarchiveObject(with: 
NSKeyedArchiver.archivedData(withRootObject: self)) as? UIView)!
    }
}

2 个答案:

答案 0 :(得分:0)

通过正确固定约束前导,尾随,顶部和底部来使用UITableView,然后设置自动尺寸。

tableView.estimatedRowHeight = 60
tableView.rowHeight = UITableViewAutomaticDimension
  

注意:设置自动尺寸时,不需要实施   heightForRowAtIndex方法

答案 1 :(得分:0)

经过一段时间我找到了解决方案。整个方法都错了!这是我如何制作它,基本上是正确的标题。问题“如何在包含UIscrollView.xib的tableViewcell.xib中添加可重用的UIView.xib”

基本上我错过了UIView类中的“required init”,并且凭借我在编程方面的丰富经验,实例化了视图中的小错误。

这是代码

https://github.com/NorwegianGR/Reusable-UIView-in-a-ScrollView

感谢大家快速回复!