设为首页 加入收藏

TOP

你真的了解UIScrollView吗?(四)
2017-10-13 09:46:26 】 浏览:7728
Tags:真的 了解 UIScrollView
往下拖拽的时候,让顶部的imageView按比例放大

实现思路:当scrollView往下拖拽的时候,通过偏移量来修改顶部imageView的transform(缩放的transform)

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat imageH = self.imageView.frame.size.height;
    CGFloat offsetY = scrollView.contentOffset.y;
    // 该判断是实现scrollView内部的子控件悬停效果
    if (offsetY >= imageH) {
        // 将红色控件添加到控制器的view中,设置Y值为0
        CGRect redF = self.redView.frame;
        redF.origin.y = 0;
        self.redView.frame = redF;
        [self.view addSubview:self.redView];
    }else{
        // 将红色控件添加到scrollView中,设置Y值为图片的高度
        CGRect redF = self.redView.frame;
        redF.origin.y = 140;
        self.redView.frame = redF;
        [self.scrollView addSubview:self.redView];
    }

    // 实现下拉放大顶部图片效果
    CGFloat scale = 1 - (offsetY / 70);
    scale = (scale >= 1) ? scale : 1;
    self.imageView.transform = CGAffineTransformMakeScale(scale, scale);
}

知识点3:网上关于UIScrollView的循环播放及缩放功能的实例

//宏定义屏幕的宽和高
#define ScreenWight [UIScreen mainScreen].bounds.size.width
#define ScreenHeight [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<UIScrollViewDelegate>//签滚动视图协议,为了实现协议方法
/** 滚动视图属性 */
@property(nonatomic, retain)UIScrollView *scrollView;
/** 分页控件属性 */
@property(nonatomic, retain)UIPageControl *pageControl;
/** 标记属性 */
@property(nonatomic, assign)BOOL flag;
@end
- (void)loadView
{
    [super loadView];
    self.scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
    //设置容量
    self.scrollView.contentSize = CGSizeMake(8 * ScreenWight, ScreenHeight);
    //添加滚动视图
    [self.view addSubview:_scrollView];
    //设置整页翻动
    self.scrollView.pagingEnabled = YES;
    //设置偏移量
    self.scrollView.contentOffset = CGPointMake(ScreenWight, 0);
    //设置代理人
    self.scrollView.delegate = self;
    for (NSInteger i = 1; i < 7; i++) {
        //创建小的滚动视图
        /**
          为什么要创建小的滚动视图?
          因为在进行缩放之后发现,之前的滚动效果发生了变化,
          原因在于当我们进行缩放的时候,协议方法不但会改变视图的尺存,同样也可以改变scrollView的contenSize属性。
          解决方法:大的scrollView上先铺设小的scrollView ,然后把imageView放到小的scrollView上
          大的scrollView主要承担水平或垂直滚动,小的scrollView承担缩放的功能,
          并且每个都设置好缩放比例,这样再进行缩放,只会改变小scrollView的contenSize, 不会改变scrollView的contentSize。
         */
        UIScrollView *tempScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(ScreenWight * i, 0, ScreenWight, ScreenHeight)];
        tempScrollView.contentSize = CGSizeMake(ScreenWight, ScreenHeight);
        //隐藏底部和右侧滚动条
        tempScrollView.showsVerticalScrollIndicator = NO;
        tempScrollView.showsHorizontalScrollIndicator = NO;
        //设置缩放的比例
        tempScrollView.minimumZoomScale = 0.5f;
        tempScrollView.maximumZoomScale = 3.0f;
        //小滚动视图设置代理,为的是实现缩放的代理方法
        tempScrollView.delegate = self;
        [self.scrollView addSubview:tempScrollView];

        //循环往小滚动视图添加图片
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, ScreenWight, ScreenHeight)];
        NSString *imageName = [NSString stringWithFormat:@"%ld.JPG", i];
        imageView.image = [UIImage imageNamed:imageName];
        [tempScrollView addSubview:imageView];
       

        //设置轻拍手势
        //首先打开imageView的用户交互,默认是关闭
        imageView.userInteractionEnabled = YES;
        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapImageView:)];
        tapGesture.numberOfTapsRequired = 2;
        [imageView addGestureRecognizer:tapGesture];
    }

    //在最前面加上最后一张图,障眼法,给人一种感觉从第一页循环
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS获取app图标和启动图片名字(A.. 下一篇iOS - 数组(NSArray)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目