私は現在、を学ぼうとしていUIScrollView
ます。演習として、UIView
テキストを表示するラベルが付いたsが必要であり、それらのビューがその中にあるようにしUIScrollView
ます。これを行うには、2つmutableArray
のがあります。1つにはテキストが含まれ、もう1つにはUIView
sが含まれます。以下は、これらの配列を初期化するメソッドです。
- (NSMutableArray *)postViewsArray
{
if (_postViewsArray == nil) _postViewsArray = [[NSMutableArray alloc] init];
return _postViewsArray;
}
- (NSMutableArray *)postsArray
{
if (_postsArray == nil) _postsArray = [[NSMutableArray alloc] init];
return _postsArray;
}
次に、これら2つの配列に値を入力します。postsArray
私は静的なテキストのみを配置しました。しかし、postViewsArray
私NSNull
はプレースホルダーとして使用しました。これは、最適化の目的、特に将来的に画像を含むビューをロードする必要がある場合のメモリ管理のためです。以下は、これらのアレイを設定する方法です。
- (void) setupPostsArray {
[self.postsArray addObject:@"Hello"];
[self.postsArray addObject:@"You are doing good"];
[self.postsArray addObject:@"By this exercise"];
[self.postsArray addObject:@"In scroll views, paging enabled :)"];
}
- (void) setupPostViewsArray {
for (int i = 0; i < [self.postsArray count]; i++) {
[self.postViewsArray addObject:[NSNull null]];
}
}
そこに、簡単です。それでは、もっと難しい部分に取り掛かりましょう。したがって、ここのloadMyPages
メソッドでは、最初に、を初期化し、scrollView
を設定してcontentSize
、トップレベルビューのサブビューとして追加します。これはself.view
です。ここでは、スワイプできる「ページ」、つまりコンテンツ、背景色の作成も繰り返します。そこにそれがある。
ただし、アプリを実行すると、view
スワイプできるものしか表示されません。そして、views
このスクロールビューにはさらに3つが収まるように見えました。作成されているNSLog
を確認するためにsを実行しましたが、デバッグ領域にログが表示されているため、正常に機能しているように見えました。私が見ることができるのは私のの最後の値を持っていることに注意してください。友人は、他のが並べて表示されるのではなく、重なっているのではないかと疑っています。page
subviews
view
postArray
view
ここで私にいくつかの光を当ててください:)以下は私のloadMyPages
方法です、そしてあなたたちが挑戦に挑戦しているなら、おそらくこれを見てください。
- (void) loadMyPages
{
NSLog(@"loads view");
CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds];
self.pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];
self.pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width * [self.postsArray count], pagingScrollViewFrame.size.height);
[self.view addSubview:self.pagingScrollView];
// iteration to enumerate creating of UIViews
for (int i = 0; i < [self.postsArray count]; i++) {
NSLog(@"Creating views?");
UIView *pageView = [self.postViewsArray objectAtIndex:i];
if ((NSNull *) pageView == [NSNull null]) {
// create a new UIView
UIView *page = [[UIView alloc] initWithFrame:self.view.bounds];
page.backgroundColor = [UIColor lightGrayColor];
// set text label
self.postLabel.text = [self.postsArray objectAtIndex:i];
// add the label to the created UIView
[page addSubview:self.postLabel];
// then lastly, add each element of the postViewsArray as a subview of the pagingScrollView
[self.postViewsArray replaceObjectAtIndex:i withObject:page];
[self.pagingScrollView addSubview:[self.postViewsArray objectAtIndex:i]];
NSLog(@"this view %@ has this post value: %@", page, [page subviews]);
NSLog(@"subviews of scrollview: %@", [self.pagingScrollView subviews]);
}
}
}