注意:
1.scrollerview上的view可以进行滑动和缩放,而要做到这,一定得设置好contentsize。不然可能会有各种不知名的bug,乱滑动,缩放不按比例。
2.可以进行一些灵活设置,如:滑动是按页滑(即,一个屏宽),不能滑过限制(bounces),显示或隐藏滚动条。
3.滑动和缩放需要在代理方法中实现,只是在实现缩放前,需要在初始化时进行缩放的最大最小比例设置。
extension InfoViewController: UIScrollViewDelegate{
//设置偏移,实现循环效果。该方法是在滑动结束后才进入
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
switch scrollView.tag {
case 1:
let leftOrRight = scrollView.contentOffset.x
//索引值需要约束,在自减得时候不能小于0,自加的时候不能大于数组长度
//如果是边界值向无值区域滑动,需要禁止
indexSeg = mySegment.selectedSegmentIndex
//判断左右滑动
if leftOrRight > lastContentOffset {
//向左滑动
//print("left")
if indexSeg < arySeg.count {
mySegment.selectedSegmentIndex = indexSeg+1
segmentClick()
}
}
if leftOrRight < lastContentOffset {
//向右滑动
//print("rigtht")
if indexSeg > 0 {
mySegment.selectedSegmentIndex = indexSeg-1
segmentClick()
}
}
default:
break
}
}
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
switch scrollView.tag {
case 1:
lastContentOffset = scrollView.contentOffset.x
default:
break
}
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.showPicV
}
func scrollViewDidZoom(_ scrollView: UIScrollView) {
let imageV = scrollView.subviews.first
self.centerShow(scrollview: scrollView, imageview: imageV as! UIImageView)
}
func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
// 缩放效果
// 放大或缩小
if scrollView.minimumZoomScale >= scale
{
scrollView.setZoomScale(1.0, animated: true)
}
if scrollView.maximumZoomScale <= scale
{
scrollView.setZoomScale(2.0, animated: true)
}
}
}
网友评论