Banner 怎么实现轮播不同尺寸的图片

需求:

UI设计APP的 BannerView 轮播图的图片每个Item尺寸不同,比如:设计 BannerView 的可视区域大小是 375 x 420px, 而图片来源一些是375 x 420px, 而另一些是 375 x 450px 的, 对于高度为 450px 的图片就会有 y 方向上的压缩,造成变形。

解决办法:

将不同尺寸的图片资源用不同的控件放置,控件A放置 375 x 420px的图片,控件B放置 375 x 450 的图片,将这些控件放置在轮播组件上。Frame 分别设置成(0, 0, 375, 420) 和 (0, -30, 375, 450)。

那么问题来了,什么样的轮播 Banner 可以盛放不同的 View?

搜~搜~搜~ 找~找~找~

终于找到一个很好用的Banner轮播组件 YJBannerView Github源码地址:https://github.com/stackhou/YJBannerViewOC ,支持自定义View 和 自定义View实例。

代码

实现自定义View的代理方法即可传递不同尺寸的 View

- (UIView *)bannerView:(YJBannerView *)bannerView viewForItemAtIndex:(NSInteger)index{

    if (bannerView == self.customBannerView) {

        UIImageView *itemView = [self.saveBannerCustomViews objectSafeAtIndex:index];
        if (!itemView) {
            itemView= [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kSCREEN_WIDTH, 180)];
            itemView.backgroundColor = [UIColor orangeColor];
            [self.saveBannerCustomViews addObject:itemView];
        }

        if (index % 2 == 0) {
            itemView.frame = CGRectMake(0, -40, kSCREEN_WIDTH, 220);
            itemView.backgroundColor = [UIColor redColor];
        }

        NSString *imgPath = [self.viewModel.customBannerViewImages objectAtIndex:index];

        [itemView sd_setImageWithURL:[NSURL URLWithString:imgPath] placeholderImage:[UIImage imageNamed:@"placeholder"]];

        return itemView;
    }

    return nil;
}

效果

具体实现Demo

地址:查看源码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值