【发布时间】:2017-07-29 00:13:04
【问题描述】:
我正在尝试在滚动视图中动态加载 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)!
}
}
【问题讨论】:
-
内容高度需要是views + padding之和。我也建议使用表格视图。我想你会发现它更容易。
-
滚动视图获取 UIViews,正如我在图片中看到的那样,但我无法在每个 UIView 子视图中添加 customView。只有最后一个。
标签: ios swift uiview uiscrollview