我试图在我的故事板中设置一个带有自动布局的滚动视图,并在代码中用几个按钮填充它,但滚动视图不滚动,我不明白如何设置约束到滚动可用?
特别是如何将约束设置为内容视图(那是什么?)。
在故事板中,滚动视图位于屏幕的底部(安全区域为20像素),从导向到尾随。它的大小为375x80。
现在在代码中,这是滚动视图如何填充按钮及其设置方式:
override func viewDidLoad() {
super.viewDidLoad()
var xCoord: CGFloat = 5
var yCoord: CGFloat = 5
let buttonWidth: CGFloat = 70
let buttonHeight: CGFloat = 70
let gapBetweenButtons: CGFloat = 5
var itemCount = 0
for i in 0..<CIFilterNames.count {
itemCount = 1
// Button properties
let filterButton = UIButton(type: .custom)
filterButton.frame = CGRect(x: xCoord, y: yCoord, width: buttonWidth, height: buttonHeight)
filterButton.tag = itemCount
filterButton.addTarget(self, action: #selector(ViewController.filterButtonTapped(sender:)), for: .touchUpInside)
filterButton.layer.cornerRadius = 6
filterButton.clipsToBounds = true
//Code for filters will be added here
let ciContext = CIContext(options: nil)
let coreImage = CIImage(image: originalImage.image!)
let filter = CIFilter(name: "\(CIFilterNames[i])")
filter!.setDefaults()
filter?.setValue(coreImage, forKey: kCIInputImageKey)
let filteredImageDate = filter!.value(forKey: kCIOutputImageKey) as! CIImage
let filteredImageRef = ciContext.createCGImage(filteredImageDate, from: filteredImageDate.extent)
let imageForButton = UIImage(cgImage: filteredImageRef!)
// Asign filtered image to the button
filterButton.setBackgroundImage(imageForButton, for: .normal)
// Add buttons in the scrollView
xCoord += buttonWidth + gapBetweenButtons
filterScrollView.addSubview(filterButton)
}
filterScrollView.contentSize = CGSize(width: buttonWidth * CGFloat(itemCount + 2), height: yCoord)
filterScrollView.isScrollEnabled = true
}
根据设备大小显示4或5个按钮,但不能显示,并且无法滚动。
如何使滚动成为可能?
答案 0 :(得分:0)
答案 1 :(得分:0)
使用自动布局而不是计算尺寸会更好 - 为将来的更改提供更大的灵活性。
以下是您可以在Playground页面中运行的示例。我使用&#34;计数&#34;作为按钮标签,因为我没有你的图像。如果您添加图片,则可以取消评论相应的行并移除array([1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009])
和。.setTitle
行:
backgroundColor