UIScrollView浏览一组图片,且图片与图片之间有间隔

摘要:
---恢复内容的开始--UIScrollView可以浏览一组视图,只要其属性pagingEnabled设置为true。我们知道UIRollView的页面翻转是每次UIRollView框架的大小。因此,我们假设间隔是dx,ImageView帧是屏幕的大小,从左到右排列。因此,如果我们将UIRollView框架的宽度设置为等于屏幕宽度+dx。

---恢复内容开始---

UIScrollView是可以浏览一组view的,只要将其属性

pagingEnabled设置为true就可以了。具体过程是这样的,

1:将一组图片按照从左到右的顺序添加到UIScrollView里边,

2:pagingEnabled设置为true

只需要两步即可,非常方便

但是你会发现这些图片是一张接一张,是这种效果:

UIScrollView浏览一组图片,且图片与图片之间有间隔第1张

我们发现ios自带的photo app里边对照片的浏览和这个差不多,但是人家每张图片之间都有个间距,

你在用手指拨动的时候会发现左边或者右边的照片并不是完全连在一起的,这个怎么去实现呢

override func viewDidLoad() {
        super.viewDidLoad()
        scrollView = UIScrollView(frame: view.bounds)
        scrollView.pagingEnabled = true
        scrollView.backgroundColor = UIColor.blackColor()
        view.addSubview(scrollView)
        pageImages = [
        UIImage(named:"photo1.png")!,
        UIImage(named:"photo2.png")!,
        UIImage(named:"photo3.png")!,
        UIImage(named:"photo4.png")!,
        UIImage(named:"photo5.png")!]
        let pageCount = pageImages.count
        let dx:CGFloat = 50
        var itemWidth = scrollView.bounds.width + dx * CGFloat(2.0)
        for  i in 0..<pageCount{
            var frame = scrollView.bounds
            frame.origin.x = itemWidth * CGFloat(i)
            frame.origin.y = 0.0
            frame.size.width = itemWidth
            let newPageView = UIImageView(image: pageImages[i])
            newPageView.contentMode = UIViewContentMode.ScaleAspectFit
            newPageView.frame = CGRectInset(frame, dx, 0)
            scrollView.addSubview(newPageView)
        }
        var tt = view.bounds.size
        scrollView.frame = CGRect(x: -dx, y: 0,  itemWidth, height: tt.height)
        let pagesScrollViewSize = scrollView.frame.size
        scrollView.contentSize = CGSizeMake(itemWidth * CGFloat(pageImages.count), pagesScrollViewSize.height)
    }

其原理就是对每一个图片加宽,然后再对其添加dx的间距,这样图片的大小回复原状了,中间也有了间隔

具体效果是这样的:

UIScrollView浏览一组图片,且图片与图片之间有间隔第2张33要

以上效果就和ios自带的照片浏览一样了,体验比上面一种确实也要舒服很多.


还有一种方法也可以实现上面的效果,原理也比较类似。我们知道UISrollView的翻页是每次翻过的是 UISrollView的Frame的大小

故,我们假定间隔是dx,且ImageView的Frame是屏幕的大小,依次从左到右排列。要使得每次翻页都能正好显示出图片,那么要求每次翻动

的宽度为图片的宽度+dx。所以如果我们设置UISrollView的Frame的Width=等于屏幕的宽度+dx。这样每次的翻页都等于Width,就能保证我们要显示

的元素在屏幕中间,当然这中间要设置UISrollView的contentSize=UISrollView的宽度*n(n个图片)

下面是代码:

    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView = UIScrollView(frame: self.view.bounds)
        scrollView?.pagingEnabled = true
        scrollView?.delegate = self
        view.addSubview(scrollView!)
        var count = imgArrary.count
        for i in 0..<count{
            var frame = view.bounds
            frame.origin.x = (view.bounds.width + dx) * CGFloat(i)
            frame.origin.y = 0
            frame.size.width = view.bounds.width
            var photo = UIPhoto(frame: frame)
            scrollView?.addSubview(photo)
            photoList.append(photo)
        }
        scrollView!.frame = CGRect(x: 0, y: 0,  view.bounds.width + dx , height: view.bounds.height)
        scrollView!.contentSize = CGSizeMake((view.bounds.width + dx) * CGFloat(count), view.frame.height)

    }

---恢复内容结束---

免责声明:文章转载自《UIScrollView浏览一组图片,且图片与图片之间有间隔》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python 启动 FastAPI 报错 Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试阅读glibc源码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

UIScrollView 原理详解

UIScrollView 原理详解      語句解釋 UITableView、UITextView是UIScrollView的子类。 UITableViewController是UIViewController的子类。 UITableViewController是管理表格视图的。 表格视图单元是你的UITableView用来在自身显示数据的UIView子...

黑马IOS学习笔记

1、模拟器返回Home键的快捷方式是 shift+命令键+H 2、UIButtonTypeRoundedRect 这个在IOS7里面是不再支持了的。因为IOS7扁平化设计,这个是在IOS6下面的。 3、viewWithTag 若有多个子控件view的tag值相同,则是按照添加的顺序来找的。而且用这个取view还有一个强转问题,因为viewWithTag返回...

iOS UIScrollview代理方法

方法&&属性:// 监控目前滚动的位置(默认CGPointZero) CGPoint contentOffset; - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated; // 滚动范围的大小(默认CGSi...

第一个完整的iOS小demo:引导

断断续续地熟悉了一些常用的控件的动态创建方式,也就是用纯代码创建,不用Interface Builder来拖放控件,也动手一一去实现了。基础的东西熟悉之后还是觉得很迷惘,不知道可以做些啥,领导建议让我直接查看公司现有的App源码,让我把那个引导功能给仿出来~ 有了目标,接下来就要分析怎么去实现了,不用第三方库,最简单的大概就是用UIScrollView来实...

IOS UI-滚动视图(UIScrollView)

1 #import "ViewController.h" 2 /* 3 1.UIScrollView控件是什么? 4 (1)移动设备的屏幕⼤小是极其有限的,因此直接展示在⽤用户眼前的内容也相当有限 5 (2)当展⽰的内容较多,超出一个屏幕时,⽤用户可通过滚动手势来查看屏幕以外的内容 6 (3)普通的UIView不具备滚动功能,不能显示过多的内容...