ページコントロールを使用してスクロールビューを作成しましたが、次のページにスクロールするとき、または次のページからスクロールするときに、スクロールビューのサブビューをフェードイン/フェードアウトにしたいと考えています。contentOffset を使用してこの効果を作成できることがわかりましたが、作成できませんでした。実際、私は初心者であり、役立つチュートリアルがあればいいのにと思います。ありがとうございました。
質問する
3903 次
4 に答える
4
UIPageControl に従ってインデックス付けされた self.viewControllers にビュー コントローラーの配列を保持していると仮定します。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat diffFromCenter = ABS(scrollView.contentOffset.x - (self.pageControl.currentPage)*self.view.frame.size.width);
CGFloat currentPageAlpha = 1.0 - diffFromCenter/self.view.frame.size.width;
CGFloat sidePagesAlpha = diffFromCenter/self.view.frame.size.width;
//NSLog(@"%f",currentPageAlpha);
[[[self.viewControllers objectAtIndex:self.pageControl.currentPage] view] setAlpha:currentPageAlpha];
if (self.pageControl.currentPage > 0)
[[[self.viewControllers objectAtIndex:self.pageControl.currentPage-1] view] setAlpha:sidePagesAlpha];
if (self.pageControl.currentPage < [self.viewControllers count]-1)
[[[self.viewControllers objectAtIndex:self.pageControl.currentPage+1] view] setAlpha:sidePagesAlpha];
}
于 2014-10-26T13:36:39.180 に答える
0
ゼロにフェードし、contentOffset
アニメーションなしに変更し、1.0 でアルファにフェードバックできます。
- (IBAction)didChangePageView:(id)sender
{
[UIView animateWithDuration:0.25
animations:^{
self.scrollView.alpha = 0.0;
}
completion:^(BOOL finished) {
[self.scrollView setContentOffset:CGPointMake(0, self.scrollView.frame.size.height * self.pageViewControl.currentPage) animated:NO];
[UIView animateWithDuration:0.25 animations:^{
self.scrollView.alpha = 1.0;
}];
}];
}
于 2013-09-15T19:17:47.703 に答える
0
Swift 2.0 では、myViewsArray に subViews の配列を保持していると仮定します。
func scrollViewDidScroll(scrollView: UIScrollView) {
//Fade in/out effect while scrolling
for (index,subView) in myViewsArray.enumerate() {
label.alpha = 1 - abs(abs(scrollView.contentOffset.x) - subView.frame.width * CGFloat(index)) / subView.frame.width
}
}
于 2016-03-14T08:31:26.517 に答える