I love iPhone, Android, Cocos2d-x
[iPhone 開発メモ] UIScrollView でスクロールさせる
大きな画像を表示してそれを自由にスクロールさせる方法
今回はあらかじめ imgname.jpg という画像ファイルを Resource に入れておいてそれを表示させてスクロールさせています。
ViewBased のアプリを新規で作成、名前を「Scroll」とする。
ScrollViewController.h
@interface ScrollViewController : UIViewController{ IBOutlet UIScrollView *scrollView; UIImageView *myImage; } @property (nonatomic, retain) UIScrollView *scrollView; @property (nonatomic, retain) UIImageView *myImage; @end
IB で UIScrollView を追加して、scrollView と接続する。
ScrollViewController.m
@implementation ScrollViewController @synthesize scrollView; @synthesize myImage; - (void)viewDidLoad { [super viewDidLoad]; UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"IMG_0594.jpg"]]; [self setMyImage:img]; scrollView.pagingEnabled = NO; scrollView.contentSize = CGSizeMake(img.frame.size.width, img.frame.size.height); scrollView.showsHorizontalScrollIndicator = NO; scrollView.showsVerticalScrollIndicator = NO; scrollView.scrollsToTop = YES; scrollView.delegate = self; [scrollView addSubview: img]; [img release]; } - (void)dealloc { [super dealloc]; [myImage release]; [scrollView release]; } @end
UIScrollView のプロパティは以下の通り
- pagingEnabled
- ページ単位でスクロールさせるか(画像等は NO の方がいい)
- contentSize
- UIScrollView のサイズ
- showsHorisontalScrollIndicator
- 水平方向にスクロールインジケータを表示するかどうか
- showVerticalScrollIndicator
- 垂直方向にスクロールインジケータを表示するかどうか
- scrollsToTop
- 画面の一番上の時計などが表示されている灰色のバーの部分をタップしたときに一番上に戻すかどうか
関連する投稿
10 comments
コメントをどうぞ
Additional comments powered by BackType
[...] テーマを「GlossyBlue」から「Aeros」に変更してみました。 そもそもGlossyBlueを使っていたのは、*1 尊敬するSun Limited Mt.さんが使っていて、とても素敵だなぁと思っていたところに、僕もWordPressを使うことになり、たまたまどこかの記事でGlossyBlueが紹介されていて、えっ!?こんなに簡単にあの素晴らしい感じのブログにできちゃうの!?という驚きと共に使い始めて今に至るという浅はかな理由からなんですが、そろそろ変えてもいいかなと。Sun Limited Mt.さんもiPhoneに夢中ですし。全然関係ないけど。 [...]
[...] [iPhone 開発メモ] UIScrollView でスクロールさせる [...]
初めまして。Objective-Cを勉強中の超初心者です。いつも勉強で参考にさせて頂いております。質問ですがUIScrollViewで大きな画像のスクロール表示は上記説明でうまく動きましたが、初期に表示される画像が画像サイズそのもので表示されています。初期に画面に合わせて表示させ、拡大縮小を行う様にするにはどのようにしたら良いのでしょうか?厚かましい質問で申し訳ございません。
okhi さん
UIScrollView に zoomScale というプロパティがあります。この値が 1 だと実寸です。この値を UIScrollView の大きさと表示する UIImage の大きさから画面に収まる比率を出せばいいのではないかと思います。ちょっと試していないのでうまくいくかどうか不明ですが、zoomScale で大きさが変わるのは確かです。
matsuura さん
早速のご回答ありがとうございます。zoomScaleですね!難しそうですが、色々と調べて試してみます。ありがとうございました。
ソースコードを拝見したところ、11行目と20行目で、imgを2回addSubviewしているのに気が付きました。
実際には修正されていると思いますが、一応、ご報告です。
これからも頑張ってください。
Katokichisoft さん
本当ですね。2回 addSubview していますね。
コード修正させて頂きます。
ご指摘ありがとうございました。
とても参考になりました。どうもありがとう。
初めてお邪魔致します。ScrollView初めて表示できました。参考になりました。ありがとうございました。
17行目 scrollView.delegate = self;で最初ビルドエラーが出てましたが、Xcode再起動で出なくなりました。
iPhone OS Scroll Viewプログラミングガイドのサンプルは何度やってもダメでしたので助かりました。
3density…
…