3d翻页效果 ios_ios 翻页效果 - CSDN
精华内容
参与话题
  • iOS 3D卡片式轮播

    万次阅读 2018-07-24 14:37:26
    效果: 参考UITableView的UITableViewDataSource和UITableViewDelegate两个方法实现;支持五险轮播,可以加载本地图片,也可以加载网络图片,可以根据自己的需求自定义 UITableViewDelegate /** * 当前显示...

    效果:
    这里写图片描述

    参考UITableView的UITableViewDataSource和UITableViewDelegate两个方法实现;支持五险轮播,可以加载本地图片,也可以加载网络图片,可以根据自己的需求自定义
    Demo地址

    UITableViewDelegate

    /**
     *  当前显示cell的Size(中间页显示大小)
     *
     *  @param flowView <#flowView description#>
     *
     *  @return <#return value description#>
     */
    - (CGSize)sizeForPageInFlowView:(HQFlowView *)flowView;
    
    /**
     *  滚动到了某一列
     *
     *  @param pageNumber <#pageNumber description#>
     *  @param flowView   <#flowView description#>
     */
    - (void)didScrollToPage:(NSInteger)pageNumber inFlowView:(HQFlowView *)flowView;
    
    /**
     *  点击了第几个cell
     *
     *  @param subView 点击的控件
     *  @param subIndex    点击控件的index
     *
     *  @return <#return value description#>
     */
    - (void)didSelectCell:(HQIndexBannerSubview *)subView withSubViewIndex:(NSInteger)subIndex;

    UITableViewDataSource

    /**
     *  返回显示View的个数
     *
     *  @param flowView <#flowView description#>
     *
     *  @return <#return value description#>
     */
    - (NSInteger)numberOfPagesInFlowView:(HQFlowView *)flowView;
    
    /**
     *  给某一列设置属性
     *
     *  @param flowView <#flowView description#>
     *  @param index    <#index description#>
     *
     *  @return <#return value description#>
     */
    - (HQIndexBannerSubview *)flowView:(HQFlowView *)flowView cellForPageAtIndex:(NSInteger)index;
    展开全文
  • 用QML和Qt C++实现翻页效果的研究(1)

    万次阅读 热门讨论 2011-02-01 18:53:00
    先占位,明天补上

    先占位,明天补上

    本来说是星期天 Jan,17号写的,结果出切逛街了,回来已经累的半死,且已经晚上10点了,看今天有没得时间写 -- Jan,18 注

     

    一直以来都想自己用 Qt 做一个翻页的效果,不过却总是找不到合适的心情来写完一篇日志。

    趁着 Nokia 最近在主打 Qt Quick ,也借着放假的空挡,决定把这篇日志写完。

     

    说到翻页效果,我想大家并不陌生。而要说到做的好的,不得不说一下 iOS 中的实现。笔者没有深入研究过 iOS 中的翻页效果是怎样具体实现,不过想来,也并不外乎以下几点:

    1.       Simulation :即所谓的仿真效果,通过模拟现实世界中的翻页动作,采点并记录下书页翻动过程中的轨迹方程,而这些方程的表现通常为 2 次或者 3 次曲线。而 Qt 中也提供对这些方程的描述,比如说:利用 QPainter drawPath 方法,画出翻页过程中的页脚曲线,通过裁减图形(图像),达到仿真的效果。

    2.       3D 2.5D 效果:苹果很多的效果都用到了 3D 的形式,而对于翻页效果来说,可以考虑 3D ,也可以用 2.5D 的假 3 维效果来以假乱真。而实现的思路可以归结为两方面,用动态的旋转来模拟 3D 的旋转;用光照及阴影来制作页脚的翻起及明暗的 3D 效果。

    3.       通常翻页的效果不仅应用于某个 widget 本身,还要对其 Children 产生效果。同时需要考虑渲染的效率问题。

     

     

    本篇采用 Qt+QML 进行编程,主要的逻辑用 Qt 实现,而最后将应用到 QML 中,以实现自定义 QML item 及其嵌套 item 的翻页效果。

     

    对于最后的效果及效率,笔者只能说基本满意。通篇只是对 Qt 编程的应用,水平有限,也没能做到像 iOS 翻页效果的逼真,和像 QML 原生 element 的那么高效及易用。当然,也希望有这方面经验或者对此感兴趣的朋友能够与我联系,大家一起研究。

     

    下面是最终的运行效果图,实现步骤在最下面的实现章节链接中。



     

      实现步骤:

     (一)   页脚图形的方程及算法

     (二)   翻页效果的模拟方法

     (三)   后续及效率优化的思考

    展开全文
  • 在类的申明文件(.h)里添加对Page控制器的申明: @property (strong, nonatomic) IBOutlet UIPageControl *page; @property (strong, nonatomic) IBOutlet UIScrollView *imageScrollView; ...
    在类的申明文件(.h)里添加对Page控制器的申明:
    @property (strong, nonatomic) IBOutlet UIPageControl *page;
    @property (strong, nonatomic) IBOutlet UIScrollView *imageScrollView;
    然后在实现文件(.m)里添加 对page对象的
    @synthesize page;
    @synthesize imageScrollView;
    实现page对象的自动存取器。
    改写viewDidLoad方法如下
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        //这里定义了滚动视图的大小,是否支持翻页,是否显示水平滚动标示,委托对象是哪个
        imageScrollView.contentSize = CGSizeMake(PAGENUM * 320.0f, imageScrollView.frame.size.height);
        imageScrollView.pagingEnabled = YES;
        imageScrollView.showsHorizontalScrollIndicator = NO;
        imageScrollView.delegate = self;
    
        //这里为滚动视图添加了子视图,为了能添加后续操作,我这里定义的子视图是按键UIButton
        for (int i = 0; i < PAGENUM; i++) {
            NSString * fileName = [NSString stringWithFormat:@"%d.jpg",i+1];
            UIButton *imageButton = [[UIButton alloc] initWithFrame:CGRectMake(i * 320.0f,  0.0f, 320.0f, 218.0f)];
            [imageButton setBackgroundImage:[UIImage imageNamed:fileName] forState:UIControlStateNormal];
            imageButton.tag = 900 + i;
            [imageScrollView addSubview:imageButton];
        }
    
        //定义PageController 设定总页数,当前页,定义当控件被用户操作时,要触发的动作。
       �0�2page.numberOfPages = PAGENUM;
        page.currentPage = 0;
        [page addTarget:self action:@selector(pageTurn:) forControlEvents:UIControlEventValueChanged];
    
        //使用NSTimer实现定时触发滚动控件滚动的动作。
        timeCount = 0;
        [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(scrollTimer) userInfo:nil repeats:YES];
    
    }
    增加两个翻页动画和自动翻页的函数
    //滚图的动画效果
    -(void)pageTurn:(UIPageControl *)aPageControl{
        int whichPage = aPageControl.currentPage;
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.3f];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [imageScrollView setContentOffset:CGPointMake(320.0f * whichPage, 0.0f) animated:YES];
        [UIView commitAnimations];
    }
    
    //定时滚动
    -(void)scrollTimer{
        timeCount ++;
        if (timeCount == PAGENUM) {
            timeCount = 0;
        }
        [imageScrollView scrollRectToVisible:CGRectMake(timeCount * 320.0, 65.0, 320.0, 218.0) animated:YES];
    }

    展开全文
  • iOS中UICollectionView实现单个cell滚动翻页并放大cellUICollectionView 在项目中的使用是非常常见的,也是非常厉害的,这个要是精通熟练了你就牛了。 这里分享一个和标题相关的需求,就是collectionCell 需要分页...

    iOS中UICollectionView实现单个cell滚动翻页并放大cell

    UICollectionView 在项目中的使用是非常常见的,也是非常厉害的,这个要是精通熟练了你就牛了。
    这里分享一个和标题相关的需求,就是collectionCell 需要分页显示并且显示出对应的上下两个cell,and 放大当前屏幕中间显示的cell。
    具体效果如图:
    这里写图片描述

    collectionView的分页我并没有使用pagingEnabled属性去控制,因为cell的左右两边还需要显示上下两个cell,cell并不是一个屏幕的宽度,
    主要代码还是在自定义的UICollectionViewFlowLayout里面:

    奉上.m里面的主要的代码

    #define ZScreen_Size [UIScreen mainScreen].bounds.size
    #define Active_Dintance 200
    #define Zoom_Factory 0.15
    
    @implementation TOPHeaderLayout
    
    - (void)prepareLayout {
    
        [super prepareLayout];
        [self calculateItems];
    }
    
    - (void)calculateItems {
        //设置样式
        self.itemSize = CGSizeMake(TOPScreenWidth-80, 157);
        self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
        self.minimumLineSpacing = 15;
        self.sectionInset = UIEdgeInsetsMake(0, 35, 0, 35);
    
    }
    
    //当边界发生改变时,是否应该刷新布局。如果YES则在边界变化(一般是scroll到其他地方)时,将重新计算需要的布局信息。
    - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)oldBounds
    {
        return YES;
    }
    
    
    //返回可见cell布局
    - (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect {
    
        NSArray *array = [super layoutAttributesForElementsInRect:rect];
        //当前显示的视图位置
        CGRect visibleRect;
        visibleRect.origin = self.collectionView.contentOffset;
        visibleRect.size = self.collectionView.bounds.size;
    
        NSMutableArray *attArray = [[NSMutableArray alloc] init];
    
        for (UICollectionViewLayoutAttributes *attributes in array) {
    
            UICollectionViewLayoutAttributes *att = [attributes copy];
            if ( CGRectIntersectsRect(attributes.frame, rect)) {
                //cell中心距屏幕中心距离
                CGFloat distance = CGRectGetMidX(visibleRect)-att.center.x;
                distance = ABS(distance);
                //判断,cell是否居中
                if (distance < ZScreen_Size.width/2 + self.itemSize.width) {
                //居中就放大 zoom比例
                    CGFloat zoom = 1 + Zoom_Factory*(1-distance/Active_Dintance);
                    att.transform3D = CATransform3DMakeScale(zoom, zoom, 1.0);
                }
            }
            [attArray addObject:att];
        }
        return attArray;
      }
    
    //手动指定偏移量
    - (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity{
    
        // 计算出最终显示的矩形框
        CGRect rect;
        rect.origin.y = 0;
        rect.origin.x = proposedContentOffset.x;
        rect.size = self.collectionView.frame.size;
    
        //获得super已经计算好的布局的属性
        NSArray *arr = [super layoutAttributesForElementsInRect:rect];
        //计算collectionView最中心点的x值
        CGFloat centerX = proposedContentOffset.x + self.collectionView.frame.size.width * 0.5;
    
        CGFloat minDelta = TOPScreenWidth-80;//cell的宽度
        for (UICollectionViewLayoutAttributes *attrs in arr) {
               if (ABS(minDelta) > ABS(attrs.center.x - centerX)) {
                    minDelta = attrs.center.x - centerX;
                }
        }
        proposedContentOffset.x += minDelta;
        return proposedContentOffset;
    }
    

    如果帮到您,请您点个顶 喜欢 支持一下谢谢。

    展开全文
  • IOS开源库一览表

    万次阅读 2014-09-25 13:50:33
    应有尽有,包罗万象 ... http://github.ibireme.com/github/list/ios/ GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库
  • 猫猫分享,必须精品原创文章,欢迎转载。...源码素材地址:效果:代码:其实代码很少,苹果都给封装好了// 1.创建核心动画 CATransition *ca = [CATransition animation]; // 1.1动画过渡类型 ca.
  •  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。  下载:https://github.com/mwaterfall/MWPhotoBrowser ...
  • iOS立方体翻转3D特效

    千次阅读 2015-12-09 14:06:36
    // // ViewController.m ...// 3D动态旋转动画 // // Created by 杨继雷 on 15/12/9. // Copyright © 2015年 杨继雷. All rights reserved. // #import "ViewController.h" #define imageCount 5
  • iOS开发-常用第三方开源框架介绍

    万次阅读 2015-08-25 09:18:39
    1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。  下载:https://github.com/mwate
  • github上很好的iOS资源集锦

    千次阅读 2016-05-27 10:45:35
    系统基础库 Category/Util  sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错~  BlocksKit 将Block风格带入UIKit和Founcation ... Co
  • GitHub上史上最全的iOS开源项目分类汇总

    万次阅读 多人点赞 2016-10-28 10:48:33
    iOS开发第三方框架大荟萃介绍及其连接!
  • iPhone、iPad产品风靡全球,巨大的用户群刺激着iOS软件开发需求,然而国内人才缺口很大,正处于供不应求的状态,ios开发前景大好。我们整理了51CTO下载中心100份热门的ios开发资料,做了一个地址收藏目录,方便大家...
  • ViewPagerTransformer实现3d轮播图

    千次阅读 2016-04-19 22:07:10
    概述CoverFlow效果IOS上自带的控件,类似3d轮播图效果。 在Android中也有很多的相关实现,大体都是使用Gallery和Camera来实现的。相关开源库:ImageCoverFlow效果图:但是Gallery已经被标记过时,而且ViewPager更...
  • 开发库整理

    千次阅读 2014-09-05 19:02:11
     实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。  下载:https://github.com/mwaterfall/MWPhotoBrowser
  • UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件。 SVPullToRefresh- 下拉刷新...MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。...XHRefreshContr
  • iOS中UIWebView的使用详解 一、初始化与三种加载方式  UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:...
  • 利用UIPageViewController设置两页效果,即书脊(spine)在中间的效果 这个效果我找了4天了,什么openGL,Layer,pageCurl效果都看过了,始终觉得UIPageViewController原生的类应该会有类似的解决办法,不容易啊  ...
  • IOS开发人员必看的精品资料100

    万次阅读 2012-09-21 18:50:04
    iPhone、iPad产品风靡全球,巨大的用户群刺激着iOS软件开发需求,然而国内人才缺口很大,正处于供不应求的状态,ios开发前景大好。我们整理了51CTO下载中心100份热门的ios开发资料,做了一个地址收藏目录,方便大家...
1 2 3 4 5 ... 20
收藏数 2,611
精华内容 1,044
关键字:

3d翻页效果 ios