2011-12-21 18 views
0

大丈夫ですので、件名は自分自身で話します。私は自分のカスタム画像でデフォルトのスクロールバーを変更する必要があります。私は、独自のScrollViewクラスを作成したり、スクロールバーイメージを使用してUIViewを作成したり、スクロールしながら再配置したりする必要のないソリューションを探していました。UIScrollViewのスクロールバーをカスタマイズする

シンプルなUIScrollViewカテゴリを使用して、スクロールバーにUIScrollViewのサブビューとしてアクセスすることが1つの解決策でした:http://leonov.co/2011/04/uiscrollviews-scrollbars-customization/#comment-7909何らかの理由で、これは私のためには機能しません。 UIScrollViewを作成してそのサブビュー配列を取得すると、手動でスクロールビューに追加するビューのみが表示されます。私はスクロールバーにサブビュー配列を反復してアクセスすることはできません。たとえば、次のコード:

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10,10,100,100)]; 
scrollView.userInteractionEnabled = YES;  
scrollView.bounces = NO; 
scrollView.showsHorizontalScrollIndicator = YES; 
NSLog(@"Subviews count is %d", [[scrollView subviews] count]); 

は、「サブビュー数は0です」と記録します。または、スクロールビューにX要素を追加すると、「サブビュー数はXです。何か案は?

答えて

1

UIScrollbarスクロールビューは、ビューがスクロールしているときにのみ作成されます。ビューがスクロールを停止すると、それらは再び削除されます。それはおそらくあなたがあなたのカテゴリーでそれらを見つけることができない理由です。

scrollviewデリゲートのscrollViewDidScrollメソッドにスクロールビューのサブビュー走査コードを移動できます。これは、ビューがスクロールしているときに実行されることを意味します。

これはすべて恐ろしい、不必要なハックだと感じることはできません。スクロールバーを表示しないようにするには、デリゲートメソッドを使用して自分でスクロールバーを実装して実装する方がよいでしょう。 viewとcontentOffsetプロパティを使用して、位置を決定します。

関連する問題