まず背景画像を表示するために,UIScrollViewにUIImageViewを追加する.
-(void)hogehogeこれだと背景画像は表示されるけど,スクロールして画像サイズを越えると背景画像は表示されない.いくらスクロールして表示させるために,
{
UIScrollView* scrollView = [[UIScrollView alloc] init];
[scrollView setFrame:CGRectMake(0.0, 0.0, WIDTH, HEIGHT)];
[scrollView setContentSize:CGSizeMake(CONTENT_WIDTH, CONTENT_HEIGHT)];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wall.png"]];
[imageView setFrame:CGRectMake(0.0, 0.0, WIDTH, HEIGHT)];
[scrollView addSubview:imageView];
[imageView release];
[self.view addSubview:scrollView];
}
[imageView setFrame:CGRectMake(0.0, 0.0, CONTENT_WIDTH, CONTENT_HEIGHT)];とすると,スクロールしても切れないけど,背景画像がContentSizeに拡大される.拡大しても大丈夫なら問題ないけど,大抵は問題ありなので,別の方法に変える.デリゲートを使ってスクロールのオフセット値を読み取って,背景画像の表示位置をオンタイムで変えてみる.
-(void)hogehogeこれでいくらスクロールしても背景画像も一緒に動いているので,きれいに表示されます.背景画像はわざわざhファイルで宣言するのも何なので,tagで判定しています(他の兼ね合いでtag値は適宜調整が必要).
{
UIScrollView* scrollView = [[UIScrollView alloc] init];
[scrollView setFrame:CGRectMake(0.0, 0.0, WIDTH, HEIGHT)];
[scrollView setContentSize:CGSizeMake(CONTENT_WIDTH, CONTENT_HEIGHT)];
[scrollView setDelegate:self];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wall.png"]];
[imageView setTag:99];
[imageView setFrame:CGRectMake(0.0, 0.0, WIDTH, HEIGHT)];
[scrollView addSubview:imageView];
[imageView release];
[self.view addSubview:scrollView];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView_
{
if( scrollView_ == scrollView )
{
[[scrollView_ viewWithTag:99] setFrame:CGRectMake(scrollView_.contentOffset.x, scrollView_.contentOffset.y, WIDTH, HEIGHT)];
}
}
3 コメント:
UIScrollViewにUIImageViewをaddせず、
[self.view addSubview:imageView];
[self.view addSubview:scrollView];
と、imageView、scrollViewの順でviewにaddして、scrollViewの背景を透過にしておくというのはなしですか?
あ,なるほど.逆ですか.UIScrollViewのaddとremoveばかりしていたので,UIScrollViewを中心で考えてました.
もしかして,UIKit本のtokoromさんですか!? UIKit本はいつも参考にしてます!
やっぱり,逆は私には効率が悪いです.
コメントを投稿