ナビゲーションバーに2つのラベルを追加しました。スクロールビューのy位置に基づいて、1つずつフェードインしてフェードインしようとしています。アルファ値を記録すると、値が正しいかのように見えます。しかし、それはあなたがそれを実行するときに見える方法は正しくありません。 topTitleLableのアルファは1からほぼ0になり、その後はゆっくりとフェードインします。これをデバッグする方法がわかりません。scrollviewデリゲートからアルファを割り当てる
これはフェードアウトしなければならないときにフェージングのラベルと下方向へのスクロールの画像です:
tldr:どのようにscrollView位置をオフに基づいてラベルアルファを変更できますか?
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
static CGFloat startFade = 190;
static CGFloat endFade = 215;
CGFloat difference = endFade - startFade;
if (scrollView.contentOffset.y < startFade && self.navigationController.topTitleLabel.alpha != 1.0) {
self.navigationController.topTitleLabel.alpha = 1.0;
self.navigationController.bottomTitleLabel.alpha = 0.0;
} else if (scrollView.contentOffset.y >= startFade && scrollView.contentOffset.y <= endFade) {
CGFloat scrollViewFraction = difference - (scrollView.contentOffset.y - startFade);
CGFloat topLabelAlpha = scrollViewFraction/difference;
CGFloat bottomLabelAlpha = 1 - topLabelAlpha;
self.navigationController.topTitleLabel.alpha = topLabelAlpha;
NSLog(@"%f VS. %f", topLabelAlpha, self.navigationController.topTitleLabel.alpha);
self.navigationController.topTitleLabel.alpha = bottomLabelAlpha;
} else if (scrollView.contentOffset.y > endFade && self.navigationController.topTitleLabel.alpha != 0.0) {
self.navigationController.topTitleLabel.alpha = 0.0;
self.navigationController.bottomTitleLabel.alpha = 1.0;
}
}
@ダフありがとうございました!私は2つのラベルの異なるメソッドを使用して終わったので、異なるy値でフェードイン/フェードアウトするようになりましたが、グラフは非常に役立ちました。 – kiaraRobles