読者です 読者をやめる 読者になる 読者になる

UIScrollView に背景画像を設定する

#import <UIKit/UIKit.h>
@interface UIScrollViewWithBGImage : UIViewController <UIScrollViewDelegate>
{
    UIImageView *backgroundImageView;
}

@property (nonatomic, retain) UIScrollView *scrollView;

@end

上のようなヘッダーにおいて、scrollViewプロパティに背景画像を追加する事を考える。

その1

簡単なのは、viewをaddした後に、次のように呼ぶこと。

     [self.view bringSubviewToFront:_scrollView];
     for(UIView *subview in [_scrollView subviews])
     {
          [_scrollView bringSubviewToFront:subview];
     }

ただこの方法だと、viewがたくさんあったときに、最後にほぼ全てのviewのz-indexを調整しなくてはならなくなる。

ということで

その2

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view./* initialize */    
    [self.view addSubview:_scrollView];
    [_scrollView addSubview:backgroundImageView];
}

#pragma mark -
#pragma mark UIScrollView delegate
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect scrolledRect;
    scrolledRect.origin = CGPointMake(_scrollView.contentOffset.x, _scrollView.contentOffset.y);
    scrolledRect.size = backgroundImageView.frame.size;
    backgroundImageView.frame = scrolledRect;
}

こんな感じで実装する。scrollViewのdelegateを使って、bgImageViewのoriginを逐一変更する。
どこにでもあるコードだと思うけども、一応。


今度UIScrollViewのプロパティに関してまとめるかも?
いろいろ忘れるときがあるので。