縮放效果的輪播圖 iOS
做個一個縮放的輪播圖,基本實現功能。
簡單的記錄下思路:
因為螢幕展示有三張圖,所以傳入的圖片要先新增4張,左邊兩張(倒數第二張,倒數第一張),右邊兩張(第一張,第二張)
1、實現圖片縮放功能(主要程式碼)
-(void)scaleImagevWithCenterX:(CGFloat)centerx{
for (UIImageView *imagev in self.imgViewArr) {
//計算當前控制元件與顯示區中心點的相對距離
CGFloat distance = ABS(imagev.center.x - centerx);
//設定縮放係數
CGFloat factor=self.scaleFactor;
//獲取縮放倍數
CGFloat scales=1/(1+distance*factor);
//進行縮放
imagev.transform=CGAffineTransformMakeScale(scales, scales);
}
}
2、實現分頁效果,主要是藉助了scrollview的delegate,根據圖片的寬度,目標偏移量x,計算出偏移後的頁數,再根據velocity.x滑動的力度,算出,便宜後是否還要平移居中調整
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
3、實現迴圈,如果到了第二張圖,直接contentOffset到倒數第二張,反之,依然。具體在方法scrollOver中。
4、新增定時器,scrollViewWillBeginDragging停止,scrollViewDidEndDragging:
willDecelerate:開啟
5、寫完發現個問題,定時器迴圈沒問題,但是,手動迴圈,有時連續滑動,直接到達第一張或末張,在scrollViewDidScroll中,寫入下面方法,解決
if (scrollView.contentOffset.x< self.imgWidth) {
scrollView.contentOffset = CGPointMake(self.imgWidth, 0);
self.scrollView.contentOffset=CGPointMake(self.imgWidth * (self.imgViewArr.count - 3), 0);
self.currentIndex = self.imgViewArr.count - 3;
}else if (scrollView.contentOffset.x > (self.imgArr.count - 2) * self.imgWidth){
self.scrollView.contentOffset = CGPointMake(self.imgWidth * 2, 0);
self.currentIndex = 2;
}
[demo地址(點選跳轉)](https://github.com/yuanweiqianyu/BannerView)
個人感覺,自己完成的輪播還是有些問題,如有大神,有改進方案,或者別的思路,敬請交流,指正。
相關文章
- iOS 輪播圖iOS
- 有間隙卡片縮放/無縫CollectionViewBanner無限輪播圖View
- Magnifier.js - 支援滑鼠滾輪縮放的圖片放大鏡效果NifiJS
- Bootstrap3的響應式縮圖幻燈輪播效果設計boot
- 原生JS實現輪播圖的效果JS
- iOS無限輪播圖片iOS
- JavaScript焦點圖輪播效果詳解JavaScript
- Android 和 iOS 圖片輪播AndroidiOS
- AndroidApp圖片輪播效果的元件化AndroidAPP元件化
- jQuery打造淘寶展示效果和淘寶輪播圖jQuery
- 網頁佈局------輪播圖效果實現網頁
- jQuery輪播圖之上下輪播jQuery
- 【iOS】自定義控制元件無限輪播 + 無限圖片輪播iOS控制元件
- javascript實現的焦點圖輪播效果詳解JavaScript
- iOS-無限迴圈輪播圖iOS
- 微信小程式------輪播圖------縱向輪播圖微信小程式
- Axure實現輪播效果
- jQuery實現輪播效果jQuery
- JavaScript字串動畫輪播效果JavaScript字串動畫
- 一對一直播系統原始碼,軟體首頁輪播圖輪播效果原始碼
- android圖片輪播效果,RollViewPager的簡單使用AndroidViewpager
- Flutter輪播圖Flutter
- vue輪播圖Vue
- 滑鼠懸浮圖片實現縮放效果
- JS實現輪播圖效果(有詳細註釋)JS
- 直播app開發,首頁輪播圖效果實現APP
- 利用回撥函式實現簡單的輪播圖效果函式
- ios使用openlayer地圖縮放時卡頓iOS地圖
- js 輪播圖 (原生)JS
- 短視訊商城原始碼,三種常見的輪播圖效果原始碼
- jQuery Mobile圖片輪轉輪播jQuery
- 文字輪播與圖片輪播?CSS 不在話下CSS
- 直播平臺搭建原始碼,bootstrap實現圖片輪播效果原始碼boot
- 短視訊軟體開發,實現簡單的輪播圖效果
- vue輪播圖外掛Vue
- ViewPage實現輪播圖View
- Banner實現輪播圖
- js實現輪播圖JS