UIScrollViewについて

315 views
Skip to first unread message

r w

unread,
Jun 23, 2010, 3:05:51 AM6/23/10
to MacSel.WorkShop
お世話になっております。

2月に受講させていただいた若林です。

先ほどお話させていただいたUIScrollViewがIBで設定した大きさを
越えて表示される件につきましてソースを貼らせていただきます。

[self.view addSubview:transverseView];

CDateView *dateView = [[CDateView alloc] initWithFrame:CGRectMake(0,
0, scrollView.bounds.size.width ,5000 *6 )];
scrollView.pagingEnabled = NO;
scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width ,
5000 *6);
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.scrollsToTop = YES;

[scrollView addSubview:dateView];
[dateView release];

transverseViewは横向き時のViewです。IBでtransverseViewの上にscrollViewを設定しています。
UIScrollViewの下にNavigationBarを貼っているのですが、NavigationBarの上に貼りつけた
dateView が描画されてしまいます。


質問ついでに申し訳ないのですが他にも疑問点がありまして

1、UIViewを大きくつくりすぎた場合に描画されないということがあるのでしょうか。
上記のソースで高さを50000のViewを作成したところ描画されなくなりました。上限などが
あるのでしょうか。

2、TextViewを使っているのですが、TextViewのタッチイベントは取れるのでしょうか。
タッチイベントが取れるとして、ViewControllerにイベントを渡すにはどうすればよいでしょうか。

3、UINavigationBarに自動的に流れる文字(電光掲示板のような)を表示したいのですが
できますでしょうか。
UIViewを派生させて作ったほうが良いでしょうか。

以上、初歩的な質問で申し訳ありませんがお答えをいただければ幸いでございます。

MACASEL森本

unread,
Jun 24, 2010, 4:26:15 AM6/24/10
to MacSel.WorkShop
To:若林様

まいど森本です。

よーく読んだのですが、状況がつかめませんでした。
この状況を再現したプロジェクト一式をzipで固めてアップロードしてもらえますか?

> 1、UIViewを大きくつくりすぎた場合に描画されないということがあるのでしょうか。
> 上記のソースで高さを50000のViewを作成したところ描画されなくなりました。上限などが
> あるのでしょうか。
まず、私はUIViewの高さに 50000 も設定したことがないので憶測ですが、メモリ不足か、想定外の値によるUIView内部のバグであると考
えます。
上限があるとすればそれはアプリが利用できるメモリの最大値ですが、これはデバイスやそのとき状況によって上限値が変わります。UIViewの高さを
50000 に設定するとそのView一枚だけで 60MB 以上のメモリを消費する計算になります。
UIの構成を練り直した方がよいと思います。


> 2、TextViewを使っているのですが、TextViewのタッチイベントは取れるのでしょうか。
> タッチイベントが取れるとして、ViewControllerにイベントを渡すにはどうすればよいでしょうか。
ViewController が UITextViewのデリゲートを受信するように設定すればよいです。

> 3、UINavigationBarに自動的に流れる文字(電光掲示板のような)を表示したいのですが
> できますでしょうか。
> UIViewを派生させて作ったほうが良いでしょうか。
UIViewを継承させて新しいクラスを作成し、ナビゲーションバーに表示するようにするのが最も良いと考えます。
Message has been deleted
Message has been deleted

r w

unread,
Jun 25, 2010, 12:51:12 AM6/25/10
to MacSel.WorkShop
森本様

お世話になっております。若林です。

すみませんUIScrollViewについては先程自己解決いたしました。

スクロールビューのクリップができていなかったようです。
下記一文で解決できました。

scrollView.clipsToBounds = YES;

ありがとうございます。

> まず、私はUIViewの高さに 50000 も設定したことがないので憶測ですが、メモリ不足か、想定外の値によるUIView内部のバグであると考
> えます。
> 上限があるとすればそれはアプリが利用できるメモリの最大値ですが、これはデバイスやそのとき状況によって上限値が変わります。UIViewの高さを
> 50000 に設定するとそのView一枚だけで 60MB 以上のメモリを消費する計算になります。
> UIの構成を練り直した方がよいと思います。

上記についてですが、実現したいことがUITableViewでは可能かわからない状態でしたので、
UIScrollViewを採用した次第です。
やりたい事としては、選択している項目以外をグレーアウトと項目1つ1つを角丸で表示したい
の2つでそれ以外はUITableViewの動きで問題ないのですが・・・
UITableViewCellにViewを乗せて表示できるのかはまだ試しておりませんでそちらで
試してみたいと思います。

質問2,3についてもお答えいただきありがとうございます。
まだデリゲートの実装もよくわかっていない状態なのですが、調べて実装出来るようにした
いと思います。

ありがとうございました!
またどうしてもわからなくなったら質問させていただいてもよろしいでしょうか(T_T)

r w

unread,
Jul 2, 2010, 1:24:29 AM7/2/10
to MacSel.WorkShop
森本様

お世話になっております。若林です。

UIScrollViewについて新たにお聞きしたいことがあります。

UIScrollViewを使ってヘッダー固定の表を作成したいのですが、一部だけスクロールしないUIScrollView
等は実装できるでしょうか。

やりたい事としてはヘッダー部分の縦スクロールはしないようにし、横スクロールのみを実装したいです。
データ部分は縦横スクロールを実装したいです。
UIScrollViewを2つに分けて連動する形をとる方法も考えてはみたのですが、スクロールを連動する方法が
わかりませんでした。
(1つめのUIScrollViewのbegantouchesメッセージをそのまま2つめのUIScrollViewに渡すなどしてみま
したが何も起こりませんでした。)

もうひとつ
> まず、私はUIViewの高さに 50000 も設定したことがないので憶測ですが、メモリ不足か、想定外の値によるUIView内部のバグであると考
> えます。
> 上限があるとすればそれはアプリが利用できるメモリの最大値ですが、これはデバイスやそのとき状況によって上限値が変わります。UIViewの高さを
> 50000 に設定するとそのView一枚だけで 60MB 以上のメモリを消費する計算になります。
> UIの構成を練り直した方がよいと思います。

とのお答えを頂いたのですが、2000件程のデータをViewに表示してスクロールを実装したいのですが、1件
辺りの高さが30と考えたとしてViewの高さは60000にもなってしまいます。
一定以上の大きさのViewを表示したいときは通常どのような実装の仕方をするのでしょうか。
UITableViewは画面内に表示するデータのみを読み込んで表示しているというのは理解できたのですが。
ネットで調べてみてもあまり大きいViewは作っている方はいないようで見つかりませんでした。

以上2点についてお答えをいただければ幸いでございます。

また、電話で質問はしてもよいでしょうか。
以上です。よろしくお願い致します。
Reply all
Reply to author
Forward
0 new messages