GithubHelp home page GithubHelp logo

codingzero / xrcarouselview Goto Github PK

View Code? Open in Web Editor NEW
781.0 781.0 170.0 3.95 MB

史上最简单的图片轮播,可左右滚动与淡入淡出,秒集成,支持gif图片,自带缓存,不依赖任何第三方库

License: MIT License

Objective-C 98.76% Ruby 1.24%

xrcarouselview's People

Contributors

bryant1410 avatar catcups avatar codingzero avatar renford avatar sofach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xrcarouselview's Issues

请求个问题

为什么要设置scrollView的contentSize的宽度为5倍的width,3倍的有什么不好的地方吗?

你用的NSTimer方法iOS10才有的吧,iOS9运行直接崩溃

修改如下

if ([[[UIDevice currentDevice] systemVersion ]floatValue] >= 10.0 ) {
        self.timer = [NSTimer timerWithTimeInterval:_time < 1? DEFAULTTIME: _time repeats:YES block:^(NSTimer * _Nonnull timer) {
            [weakSelf nextPage];
        }];
    }else {
        self.timer = [NSTimer timerWithTimeInterval:_time < 1? DEFAULTTIME: _time target:self selector:@selector(nextPage) userInfo:nil repeats:YES];
    }

占位图未提供修改接口.

占位图未提供修改接口.

可以提供一个修改接口,然后在.m 里给个默认的设置.
如果设置了就使用修改的,
如果没有设置就使用默认的占位图.

对于使用 Pod 的用户来说,直接修改源文件?

pageControl 位置计算错乱

你好,我使用你的代码做轮播图,在外部修改 XRCarouselView 的 frame 后,手动从右往左滑,pageControl 位置计算错乱,从左往右是没问题的。
感觉应该是 changeCurrentPageWithOffset 方法的问题,但目前还没看懂你是怎样计算的。

发现个bug

感谢作者提供这么优秀的开源工程: )
bug:
两张滚动图片,当滚动到第一张时候,切换到另一个界面(比如另一个tabbar),过4s钟再切回来,发现pageControl已经指示第二张图了,但是图片显示的还是第一张图,没有切到第二张图。经过我调试,发现把changeToNext方法内容用dispatch_async(dispatch_get_main_queue,...)包起来可以解决这个问题: )

下载图片时数组越界闪退

您好,在 - (void)downloadImages:(int)index 中,将NSBlockOperation添加到NSOperationQueue中默认是并发执行的,因此会发生数组越界的问题,这里可以设置NSOperationQueue的最大并发数为1 或者添加依赖使NSBlockOperation串行执行

提两条建议

1、如果我的手势一直往左滑动,是不是应该图片0到图片2呢?
2、pageControl是不是加上事件会更完善些!

延迟设置图片数组无法正常显示

你好。
我先创建一个XRCarouselView(传的空图片数组),然后通过网络请求图片地址,再将图片地址数组赋值给imagesArray,发现这样赋值无法正常显示,上一个版本都可以的。

照片顯示方式,最好也能加入@property

[_currImageView setContentMode:UIViewContentModeScaleAspectFill];
[_otherImageView setContentMode:UIViewContentModeScaleAspectFill];
_currImageView.clipsToBounds = YES;
_otherImageView.clipsToBounds = YES;

placeholderImage设置无效

如果我在请求数据还没有回调时,即我的imageArry还无法赋值的时候,那么placeholderImage的设置是没有效果的。

在有URL,但是请求不到图片的时候,会崩溃。

你好:
在开发中,其实可能会出现这种问题,有url,但是个错误的url。
这个时候,本地缓存没有。下载图片下载不到的时候,会crash。
* UIImage image = [UIImage imageWithData:data];
[self.imageDic setObject:image forKey:key];

代码是这两句,因为image是个空的,所以存储的时候,就会cras掉。
不知道你们有没有过这种问题,我是碰到过。如果说的不对,还请见谅。

placeholder的照片, 最好用UIColor畫一個出來

使用者若直接把.h輸入進來,沒有輸入到placeholder的照片,就會發生錯誤

  • (void)setImageArray:(NSArray _)imageArray{
    _imageArray = imageArray;
    _images = [NSMutableArray array];
    for (int i = 0; i < imageArray.count; i++) {
    if ([imageArray[i] isKindOfClass:[UIImage class]]) {
    [images addObject:imageArray[i]];
    } else if ([imageArray[i] isKindOfClass:[NSString class]]){
    *
    [_images addObject:# [UIImage imageNamed:@"placeholder"]];

使用本地gif图时崩溃

iPad mini2
打开之后内存占用到400MB左右,一会就崩溃了。
共两页,每页一张gif,估计是 gif 图导致了内存涨得厉害。

crash

setFrame方法中添加观察者,会造成崩溃.
因为setFrame多次调用,观察者多次添加,dealloc只移除一个观察者.

发现3个bug

使用时发现3个bug
1.自定义了切换时间后,还是会出现变成默认2s的情况.
2.从网络加载完图片后,不能及时替代占位图显示出来.
3.首次加载数据,直接向左划会crash.

已经手动修改代码解决,也不排除是使用方法不对导致的问题.
有时间你可以看一下.

iOS8 scrollView crash

iOS8下 tableView上具有多个XRCarouseView,自动轮播,多次来回滑动,框架会有概率出现僵尸崩溃,原因是控件释放后,内部scrollView还在回调didScroll方法。[XRCarouseView scrollViewDidScroll:] message sent to dellocated instance 0xxxxxxx 建议在处理一下scrollView代理:

  • (void)dealloc{
    self.scrollView.delegate = nil;
    }

下载图片时数组越界闪退

您好,在 - (void)downloadImages:(int)index 中,将NSBlockOperation添加到NSOperationQueue中默认是并发执行的,因此会发生数组越界的问题,这里可以设置NSOperationQueue的最大并发数为1 或者添加依赖使NSBlockOperation串行执行

轮播图全屏的时候,push到下个界面,会出现imageview重新计算大小导致大小不是全屏

轮播图全屏的时候,push到下个界面,会出现imageview重新计算大小导致大小不是全屏

lazy var carouselV: XRCarouselView = {
    let view = XRCarouselView()
    view.imageArray = [
        UIImage.Name("login_back1")!,
        UIImage.Name("login_back2")!,
        UIImage.Name("login_back3")!
    ]
    view.pagePosition = .PositionHide
    view.time = 5
    view.contentMode = .scaleAspectFill
    view.isUserInteractionEnabled = false
    return view
}()

view.addSubview(carouselV)
carouselV.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
这样,但是在我push到下个界面的时候,会在要进入下个界面的时候,imageview的大小会从状态栏下面开始,而不是全屏,导致状态栏显示出来,我看层级,只有imageview会这样,下面的scrollview并没有

<UIImageView: 0x10c9264d0; frame = (828 0; 414 896); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x28222e100>>
Printing description of $54:
<UIScrollView: 0x111044e00; frame = (0 0; 414 896); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x282ce1fb0>; layer = <CALayer: 0x28222dd60>; contentOffset: {828, -44}; contentSize: {2070, 0}; adjustedContentInset: {44, 0, 34, 0}>
Printing description of $55:
<XRCarouselView: 0x10c924e10; frame = (0 0; 414 896); userInteractionEnabled = NO; layer = <CALayer: 0x28222e4e0>>

这是我断点的时候打印出的属性,我看到是UIScrollView 的contentOffset: {828, 0} 变化了contentOffset: {828, -44}

离线展示问题

离线展示轮播图时其中一个轮播图的Title会固定在下方,其它Title会覆盖上去,而且有时离线展示的时候会不显示轮播图,就是一片空白。

自动轮播,崩溃。

hi,看了你的自动轮播感觉写的很不错,但是我将我自己写的库切换成你的库后,发现广告崩溃。

错误日志:-[UIView setImage:]: unrecognized selector sent to instance 0x170395af0
崩溃在这句代码: _pageControl.currentPage = (_currIndex + 1) % self.images.count;
我在首页添加了自动轮播,在不停的push和pop的操作后,有几率会崩溃。

已在生命周期做Stop Timer 和Start Timer处理,望回复,并解决。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.