2015-03-13 47 views
0

我試圖通過UIScrollView向上/下方向滾動來更改的值alpha,我的問題是如何在用戶向上或向下滾動時設置我的視圖的Alpha值?像UISlider但UIScrollView的iOS:通過滾動更改值

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIView *viewx = [[UIView alloc]initWithFrame:self.view.frame]; 
    [_scrollView setContentSize:viewx.frame.size]; 
    viewx.backgroundColor = [UIColor yellowColor]; 
    [_scrollView addSubview:viewx]; 


    _scrollView.delegate = self; 

} 

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    pointNow = scrollView.contentOffset; 
} 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView.contentOffset.y<pointNow.y) { 
     NSLog(@"down"); 

     _redView.alpha = ??? 

    } else if (scrollView.contentOffset.y>pointNow.y) { 
     NSLog(@"up"); 
     _redView.alpha = ??? 

    } 
} 

回答

2

也許嘗試使用滾動視圖從原點偏移爲計,前百分比設置alpha值:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    _redView.alpha = 1-(scrollView.contentOffset.y/(scrollView.contentSize.height - scrollView.frame.size.height)); 
} 

因此,在這種情況下,如果scrollview位於頂部scrollView.contentOffset.y == 0,因此alpha == 1,即 alpha = 1-(0/(contentHeight - scrollViewHeight)) = 1-0 = 1

如果它位於底部,scrollView.contentOffset.y == scrollView.contentSize.height - scrollView.frame.size.height(因爲內容偏移量不會完全達到內容視圖的底部,而是會達到內容視圖的底部而不是滾動視圖的高度)。因此alpha == 0,即alpha = 1 - ((contentHeight - scrollViewHeight)/(contentHeight - scrollViewHeight)) = 1-1 = 0

0

你想讓alpha基於scrollview的位置嗎?還是隻想向上滾動以使視圖更清晰可見並向下滾動以使其更透明?

如果你想要後者,你可以簡單地將.01或.1添加到阿爾法,如果他們向上滾動,或減少,如果他們向下滾動。

例子:

_redView.alpha = _redView.alpha - 0.1 //in the "down" statement 

如果你想它的基礎上的偏移,那麼你需要一個公式來滾動視圖的偏移量轉換爲數字0.0和1

實例之間:

float alpha = 1 - (self.view.frame.size.width/self.scrollView.contentSize.height)