2012-02-18 16 views
14

私は初心者ですので、私の質問は本当に明白ですが、これまでのところ解決策は見つかりませんでした。UIScrollViewフレームのサイズをプログラムで設定する方法は?

IB UIScrollViewで行い、File's Ownerと接続しました。 UIScrollView(ScrollViewという名前)のフレームサイズを設定したいと思います。

const CGFloat BoardWidth = 320; 
const CGFloat BoardHeight = 400; 

//I tried this way but 'Expression is assignable' - said Xcode 
ScrollView.frame.size.width = BoardWidth; 
ScrollView.frame.size.height = BoardWidth; 

どのように私は最も簡単なScrollViewフレームのサイズを設定できますか? contentSizeプロパティを使用して

+5

Objective-Cでは、クラス名は大文字で始まり、class * instances *とスカラー値は小文字で始まります。 'scrollView'、' boardWidth'、 'boardHeight'は規約と一貫しています。 – yuji

答えて

15
CGRect scrollFrame = CGRrectMake(x, y, w, h); 
ScrollView.frame = scrollFrame; 

または、幅と高さのみを変更する必要がある場合は、

CGRect scrollFrame; 
scrollFrame.origin = ScrollView.frame.origin; 
scrollFrame.size = CGSizeMake(w, h); 
ScrollView.frame = scrollFrame; 

編集そのままセンターを保つ:

CGRect scrollFrame; 
CGFloat newX = scrollView.frame.origin.x + (scrollView.frame.size.width - w)/2; 
CGFloat newY = scrollView.frame.origin.y + (scrollView.frame.size.height - y)/2; 
scrollFrame.origin = CGPointMake(newX, newY); 
scrollFrame.size = CGSizeMake(w, h); 
scrollView.frame = scrollFrame; 
+0

Hm ...うまくいるようですが、Interface Builderで設定したとおり、xとyの位置を維持したいと思います。 –

+0

はい、提案した2番目の方法を試してみてください。幅と高さのみを変更し、xとyを変更しません。実際、CGRectは、xとyが格納されている原点と、幅と高さが格納されているサイズで構成されています。 – sch

+0

さて、大丈夫です。右。一見してそれを得られなかった。しかし、今度は左上の点を維持しながらUIScrollViewのサイズを変更します。だから、私はそれが常に中央揃えにしたい場合、私はちょうど今それを整列させる必要がありますか? –

0

それはフレームよりも大きくする必要があります

ScrollView.contentSize = CGSizeMake(320, 520); 

実際にスクロールそれはそう。

4

あなたは以下のようにそれを行うことができ、

scrollView.frame = CGRectMake(xOrigin,yOrigin,width,height); 

は、あなたがそれ以下のようにscrollviewのコンテンツサイズを探している場合は、

scrollView.contentSize = CGSizeMake(width,height); 
+0

このようにcontentSizeを設定すると、scrollViewはスクロールしません。 –

1
CGRect Frame = ScrollView.frame 

Frame.frame.size.width = BoardWidth; 
Frame.frame.size.width = BoardWidth; 

ScrollView.frame = Frame; 

フレームは構造体なので、オブジェクトのフレームを直接設定することはできません.Cgrectを作成して操作する必要があります。

5

たとえば、これを行う必要があります。

ScrollView.frame = CGRectMake(0, 0, BoardWidth, BoardHeight); 

完了したら、contentSizeプロパティも設定する必要があります。あなたのUIScrollViewのフレームの後ろに「伸びる」領域です。

あなただけ水平方向にスクロールする場合:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, BoardHeight); 

をあなただけ垂直方向にスクロールする場合:

ScrollView.contentSize = CGSizeMake(BoardWidth, h * BoardHeight); 

を使用すると、水平方向と垂直方向の両方にスクロールする場合:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, h * BoardHeight); 

ここで、wおよびhは、incrementmenの一般的な値ですあなたの身幅と身長のどちらかを選んでください。

水平(たとえば)の個別スクロールが必要な場合(たとえば、画面の同じ寸法のページがあるなど)

ScrollView.pagingEnabled = YES; 
ScrollView.contentSize = CGSizeMake(p * BoardWidth, BoardHeight); 

ここで、pは、表示するページ数です。

希望します。

+0

Hehe、ありがとう。私はそれがすでに、本当に同じ方法で書いています。 :P –

+0

upvoteもしあなたがそれを好きなら...歓声:) –

関連する問題