
如何让HYBLoopScrollView横屏竖屏完美适配AutoLayout与旋转屏幕完整指南【免费下载链接】HYBLoopScrollView一行代码接入轮播组件自带图片下载、缓存相关功能无任何第三方依赖、轻量级组件。项目地址: https://gitcode.com/gh_mirrors/hy/HYBLoopScrollView如果你正在寻找HYBLoopScrollView 轮播图横屏竖屏适配方案这篇 AutoLayout 与旋转屏幕完整指南能帮你一次搞定。HYBLoopScrollView 是一个零第三方依赖的 iOS 轻量级广告轮播组件自带图片下载与缓存从 3.1.0 版本起它正式支持横屏、竖屏双方向显示与自动布局并会为横竖屏分别缓存图片尺寸旋转屏幕后依然无缝循环滚动、不拉伸、不错位。横竖屏适配为什么容易翻车先看懂 3 个关键点很多自研轮播组件在旋转屏幕后会出现三种典型问题现象根本原因图片变宽/变高变形子视图用写死的 frame旋转后没重新计算分页错位、跳页itemSize还是旧尺寸分页对齐失效圆点指示器位置偏移page control 布局没有随 bounds 重排HYBLoopScrollView 用「自动重排 分方向缓存」两个机制解决了这些问题你几乎不需要写适配代码。底层原理layoutSubviews 自动重排机制旋转屏幕时UIKit 会改变视图的boundsHYBLoopScrollView 在每次布局时都会自动完成三件事源码见 HYBLoopScrollView/HYBLoopScrollView/HYBLoopScrollView.m同步滚动项尺寸把内部UICollectionViewFlowLayout的itemSize刷新为当前hyb_size保证一页一张图、分页对齐同步滚动区域collectionView.frame self.bounds让轮播区域始终铺满自身边界重置到中间页并刷新圆点无动画地滚回中间页无缝循环的中点并重新计算 HYBPageControl 小圆点的居中/靠右位置。另外组件的setFrame:也会同步更新itemSize见 HYBLoopScrollView/HYBLoopScrollView/HYBLoopScrollView.mframe 布局方式下旋转同样安全。 还有一个隐藏细节图片下载缓存的 key 会根据当前设备方向拼接portait或lanscape后缀见 HYBLoopScrollView/HYBLoopScrollView/HYBLoadImageView.m也就是说横屏与竖屏各自缓存对应尺寸的裁剪图片互不污染。最快配置方法Masonry AutoLayout 约束一步到位工程内已内置 Masonry见 Masonry/ 目录配合 AutoLayout 使用只需 4 行约束官方 Demo 的完整写法在 HYBLoopScrollView/ViewController.m[loop mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.mas_equalTo(0); make.height.mas_equalTo(120); make.top.mas_equalTo(0); }];约束生效 → 旋转屏幕时系统重算布局 → 触发layoutSubviews自动重排全程无需监听任何方向通知。旋转屏幕后的完整自检清单按顺序过一遍这 5 项即可确保横竖屏表现一致✅创建方式用唯一入口loopScrollViewWithFrame:imageUrls:timeInterval:didSelect:didScroll:创建frame 传占位值即可AutoLayout 会接管✅图片填充按需设置imageContentMode如UIViewContentModeScaleAspectFill避免不同方向下留白差异过大✅自动裁剪shouldAutoClipImageToViewSize YES时组件会按当前方向尺寸裁剪并分方向缓存横竖屏各存一份✅缓存刷新调整裁剪参数后调用[loop clearImagesCache]清空旧缓存再验证见 HYBLoopScrollView/HYBLoopScrollView/HYBLoopScrollView.h✅定时器管理在viewDidAppear:/viewDidDisappear:中调用startTimer/pauseTimer旋转后自动轮播不丢失常见坑位与快速排错指南问题快速解法横竖屏切换后图片不铺满检查是否误开了shouldAutoClipImageToViewSize改回NO并调用clearImagesCache清缓存修改属性后看不到变化图片有本地缓存先清缓存再运行轮播不自动播放确认未在viewDidDisappear:暂停后忘记在viewDidAppear:恢复block 回调持有 self 导致内存不释放回调内统一使用weakSelf弱引用Demo 中有标准写法见 HYBLoopScrollView/ViewController.m安装集成两种方式任选CocoaPods在Podfile中添加pod HYBLoopScrollView版本规格见 HYBLoopScrollView.podspec当前 3.2.1最低支持 iOS 6.0源码拖入直接把HYBLoopScrollView文件夹拖进工程即可无任何第三方依赖不需要额外配置横竖屏能力自 3.1.0 版本引入完整变更说明可参考 README.md 的版本历史。写在最后只要遵循「AutoLayout 约束 让组件自己重排」的思路HYBLoopScrollView 在旋转屏幕场景下基本是免维护的布局交给系统尺寸同步交给layoutSubviews图片尺寸交给分方向缓存。对照上面的自检清单逐项确认横屏竖屏适配就能一次通过。【免费下载链接】HYBLoopScrollView一行代码接入轮播组件自带图片下载、缓存相关功能无任何第三方依赖、轻量级组件。项目地址: https://gitcode.com/gh_mirrors/hy/HYBLoopScrollView创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考