前言:最近開始一波整理背捌,準備把最近遇到的一些難題和解決方法整理一下毙籽,用來留念。還有希望能小小幫助到同學們毡庆。
開始主題坑赡,先來一波演示吧。
看過之后 估計大部分筒子們都有一些想法么抗。其實這確實不難毅否,主要就是滑動到中間的時候小球變大和變小的效果。這比較繞一點乖坠。
其他地方就不多說了 不懂得可以看我的demo 在這里就著重說一下關鍵的一個代理方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
變化效果主要就在這個方法里邊實現(xiàn)的搀突。
先看下圖
在這里上邊那個代理里邊主要實現(xiàn)的效果是:
1.向左滑動的時候 4 滾到5的位置 并且從小球變化成大球 ,5滾動到6的位置 并且從大球變化成小球。說到這里 仰迁,童鞋們是不是有思路了??甸昏。
2。想右滑動的時候 6滾動到5的位置 從小球變打球徐许, 5滾動到4的位置 從打球變小球施蜜。
實現(xiàn)以上這兩種設想,就行了 接下來就是具體實現(xiàn)了
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
// NSLog(@"%f",scrollView.contentOffset.x);
CGFloat one_with = scrollView.frame.size.width/5.0f;//每一個小球所占的大小
CGFloat offSet_x = scrollView.contentOffset.x;//滾動視圖現(xiàn)在的偏移量
NSInteger Number = offSet_x/one_with;//第幾個區(qū)域
CGFloat surplus_x = offSet_x-Number*one_with;//在某個小球區(qū)間里的偏移量
// NSLog(@"第幾個區(qū)域%ld",Number);
// 算出每一像素 小球的變化值 (小球的frame的變化量)
CGFloat sub_x = aScaleH(16.5)/one_with*surplus_x;
CGFloat sub_y = aScaleH(6)/one_with*surplus_x;
CGFloat sub_w = aScaleH(33)/one_with*surplus_x;
CGFloat sub_h = aScaleH(33)/one_with*surplus_x;
// selectBtn.frame =kRect(Label_W*2+20+i*Label_W, 6, 35, 35);
//在左邊
UIButton *rightBtn = (UIButton *)[self viewWithTag:153400+Number+1];
rightBtn.frame = CGRectMake(one_with*2+aScaleW(20)+one_with*(Number+1)-sub_x, aScaleH(6)-sub_y, aScaleW(35)+sub_w, aScaleH(35)+sub_h);
//在右邊
UIButton *leftBtn = (UIButton *)[self viewWithTag:153400+Number];
leftBtn.frame = CGRectMake(one_with*2+aScaleW(20)+one_with*(Number)-(aScaleH(16.5)-sub_x), aScaleH(6)-(aScaleH(6)-sub_y), aScaleW(35)+( aScaleH(33)-sub_w), aScaleH(35)+(aScaleH(33)-sub_h));
//其他小球回復原大写朴纭(防止快速滑動的時候回復不過來)(完美7)
UIButton *atherRightBtn = (UIButton *)[self viewWithTag:153400+Number+2];
atherRightBtn.frame =CGRectMake(one_with*2+aScaleW(20)+one_with*(Number+2), aScaleH(6), aScaleW(35), aScaleW(35));
UIButton *atherleftBtn = (UIButton *)[self viewWithTag:153400+Number-1];
atherleftBtn.frame =CGRectMake(one_with*2+aScaleW(20)+one_with*(Number-1), aScaleH(6), aScaleW(35), aScaleW(35));
//滾動的時候拖拽按鈕在滾動的時候影藏
self.moveBtn.hidden = YES;
[self.moveBtn setTitle:@"" forState:(UIControlStateNormal)];
}
有些童鞋估計 只看這里會有點蒙 沒關系 demo在這里 可以結合著看https://github.com/ZPCoder/ZPScrollView