Ios 使用自动布局的水平UIScrollView
我已经尝试了很长一段时间了,并且浏览了很多关于SO的帖子和一些视频教程。我想创建一个水平滚动视图,其中包含一些按钮,如下所示: 我的视图层次结构如下所示:Ios 使用自动布局的水平UIScrollView,ios,objective-c,uiscrollview,autolayout,Ios,Objective C,Uiscrollview,Autolayout,我已经尝试了很长一段时间了,并且浏览了很多关于SO的帖子和一些视频教程。我想创建一个水平滚动视图,其中包含一些按钮,如下所示: 我的视图层次结构如下所示: 视图控制器 看法 滚动视图 看法 钮扣 我对滚动视图设置了顶部、前导、尾随和底部约束。我已经将它的宽度设置为它的superview,并将它的高度设置为200。到目前为止还不错,对于scroll视图内部的视图,我已经将它的前导、尾随、顶部和底部约束设置为零,相对于它的superview,即scroll视图。我已经使它的宽度等
- 视图控制器
- 看法
- 滚动视图
- 看法
- 钮扣
- 看法
- 滚动视图
- 看法
let index = Int(scrollView.contentOffset.x/self.view.frame.size.width) + 1
print("\(index)")
if index < (selectedRestaurant.multipleImages.count) {
scrollView.setContentOffset(CGPoint(x: CGFloat(index) * self.view.frame.size.width, y: 0), animated: true)
}
let index=Int(scrollView.contentOffset.x/self.view.frame.size.width)+1
打印(“\(索引)”)
如果索引<(SelectedRestarant.multipleImages.count){
scrollView.setContentOffset(CGPoint(x:CGFloat(索引)*self.view.frame.size.width,y:0),动画:true)
}
太简单了
您必须将ScrollView内容视图的宽度设置为最后一个按钮x轴+最后一个按钮宽度。您需要在ScrollView内部添加一个UIView,作为ScrollView的contentView,因为您需要水平滚动,所以contentView的宽度应大于ScrollView的框架,所以,添加一个和scrollview高度相同的高度约束,并将宽度设置为一个大值,比如2000。现在创建一个宽度约束的IBOutlet,您将根据您的内容进行调整,在设置containerView后,在contentView而不是scrollview上添加所有按钮。。根据最后添加的按钮计算containerView的宽度,你的scrollview应该可以工作。哼,我认为你在搞乱scroll view中可滚动内容的内容大小。您必须设置滚动视图的内容视图(您已将视图设置为按钮的超级视图),确保该视图的宽度约束符合您的要求,即等于所有按钮宽度之和+按钮之间所有间距之和,您可以发布项目git链接,以便我为您修复。@dip:是指向git repo的链接,请看一看。修复了这个问题,我正在提出请求,请接受,或者你可以直接从ripo下载。我想你错过了一些东西,这就是为什么它不起作用。显示你的故事板布局我在评论中添加了GIT链接。只需删除旧的scrollView并创建一个新的。我在这里分享的东西工作得很好。不知怎么的,你的scrollView不工作。但是我的方法很好。我制作了两个版本,一个是stackView,另一个就是我提到的。这是我的git链接,谢谢,我会检查一下。对我来说,最后一个项目有尾随集也是很重要的
let index = Int(scrollView.contentOffset.x/self.view.frame.size.width) - 1
print("\(index)")
if index >= 0 {
scrollView.setContentOffset(CGPoint(x: CGFloat(index) * self.view.frame.size.width, y: 0), animated: true)
}
let index = Int(scrollView.contentOffset.x/self.view.frame.size.width) + 1
print("\(index)")
if index < (selectedRestaurant.multipleImages.count) {
scrollView.setContentOffset(CGPoint(x: CGFloat(index) * self.view.frame.size.width, y: 0), animated: true)
}