ベスト・アプローチは、ページングUIScrollViewを作成することです。次に、ナビゲーションとメインコンテンツの両方のUIScrollを1つのUIView /ページに配置します。スワイプすると、ページが固定されます。ナビゲーションは少し動いているようですが、私はGoogleがこのアプローチを使用したと仮定します。
ここでは、ページングスクロールビューに必要なものを正確に示すためのサンプルコードのチュートリアルを示します。
http://www.iosdevnotes.com/2011/03/uiscrollview-paging/
ナビゲーションラベルを達成するために、私はUIViewのサブクラスを、右のメインスクロールビューの上にビューを追加すると思います。次に、ビューにラベルの再編成を指示します。おそらく ` - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
私はすぐに私が何を意味するかを実証する何かがあります。これは私が同様のプロジェクトのためにこれをしなければならないのUIView
- (void)addLablesForItems:(NSArray *)items
{
for (NSString *s in items)
{
UILabel *l = [[UILabel alloc] initWithFrame:CGRectZero];
l.text = s;
[self addSubview:l];
}
[self layoutSubviews];
}
- (void)layoutSubviews
{
for (UIView *l in [self subviews])
{
if ([l isKindOfClass:[UILabel class]])
{
int index = [[self subviews] indexOfObject:l];
if (index == 0)
{
l.frame = CGRectMake(0, 0, 20, 20);
}
else
{
UILabel *previousL = (UILabel *)[[self subviews] objectAtIndex:index -1];
l.frame = CGRectMake(previousL.frame.origin.x+previousL.frame.size.width, 0, 20, 20);
}
}
}
}
- (void)shiftLabels:(int)direction
{
//0 is left
//1 is right
for (UIView *l in [self subviews])
{
if ([l isKindOfClass:[UILabel class]])
{
if (direction == 0)
{
int newOrigin = l.frame.origin.x - l.frame.size.width;
if (newOrigin < 0)
{
newOrigin = self.frame.size.width - l.frame.size.width;
}
[UIView animateWithDuration:.5 animations:^{
l.frame = CGRectMake(newOrigin, 0, 20, 20);
}];
}
if (direction == 1)
{
int newOrigin = l.frame.origin.x + l.frame.size.width;
if (newOrigin < 0)
{
newOrigin = self.frame.origin.x;
}
[UIView animateWithDuration:.5 animations:^{
l.frame = CGRectMake(newOrigin, 0, 20, 20);
}];
}
}
}
}
`
私はそれがページングスクロールビューより複雑だと信じています。テキストラベルに気が付いた場合は、長さに関係なく、正確な左/中央/右の位置に移動します。私はページングのスクロールビューを行う方法を知っています。私が理解する限り、どのように同じ効果を達成できるかわかりません。 – kurisukun
申し訳ありませんが、追加するだけで、私のコードはすでに説明した方法で作成されていますが、同じスライディングテキスト効果は得られません。 – kurisukun
ただ私の答えを編集しました。それが役に立ったら教えてください。 –