2013年2月26日火曜日

StoryBoardを使った場合のUIScrollView

Use AutoLayoutのチェックがついているとスクロール出来ません。









地味にハマったorz

2013年2月22日金曜日

OSのバージョンによるUIScrollViewの動きの違い

ちょっとハマったので備忘のため。

pagingEnabled=YES, bounces=YESのスクロールビューを使った時、
iOSの5と6でスクロールの動きが違ったので以下に内容を記載します。

例えば以下のようなコードを書いた場合。

scrollView.contentSize 
  = CGSizeMake(pageViewSize.width*maxCol, pageViewSize.height*maxRow);

この場合pageViewSizeのサイズ*グリッド数分の領域がcontentSizeとしてセットされます。
この時、pageViewSize.widthが1024、maxColが2だとすると
scrollViewのcontentSize.widthは2048になります。
この状態で、scrollViewのcontentOffset0,0から右フリックすると、
scrollViewDidEndDecelerating内でのcontentOffsetが
iOS6の場合は、1024で止まるのですが、
iOS5の場合は、1024を超えてoffsetが増加していきます、
(つまり、contentSizeを超えた領域までスクロールが到達してしまう。)

対策としては、scrollViewDidEndDecelerating内で位置を補正するコードを書くか
bounces=NOにして、バウンド処理を切れば、iOS5でも正常な位置でストップするようになります。