2013-09-02 18 views
36

私はUIViewを使用しています。ユーザーがボタンに触れるとサイズを変更したいと思います。UIViewのサイズをプログラムで変更する

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self setFrame:newFrame]; 

CGRect newFrame = self.searchField.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
self.searchField.frame=newFrame; 

いずれも機能しません。何も変更しないでください。固定幅と高さをUIViewに設定したい。

+0

は、ビューの実装ファイルで、このですコントローラ? –

+0

@Tim Bodeitはい。 – onivi

答えて

71

私が正しく理解している場合は、self.myviewのサイズを変更する必要があります。しかし、あなたはそれのフレームを設定していません。代わりに、sendFrame:をビューコントローラといくつかの検索フィールドに呼び出そうとしています。私は驚いている、前者はコンパイラのエラーを与えていない。

試してみてください。私の場合は

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self.myview setFrame:newFrame]; 
+1

downvoterはなぜコメントするのですか? –

+4

そのコードはUICollectionViewに何の影響も与えていないようです。 – Gerry

+0

@Gerry:UICollectionViewで動作します。コレクションビュー内のセルでは機能しませんが。これらのサイズは、ビュー自体ではなく、コレクションビューに使用されるレイアウトによって設定されます。 UICollectionViewDelegateFlowLayoutプロトコルのcollectionView:layout:sizeForItemAtIndexPathを見てください –

5
view.frame = newframe; 

または

view.center = newcenter; 
4

は、私は私のビューの幅に制約があったので、私はティム言ったように幅を変更することができませんでした。

私が行ったこと:例えば、myviewWidthConstraintと呼ばれるコンセントにコンセントを作成しました。そして、私はこのような私の見解の幅を変更するには、このコンセントを使用:

mycell.myviewWidthConstraint.constant = newSize; 
0

サイズフィールドは読み取り専用で、ちょうど新しいもの作る -

//Set height 
let f = view.frame;  //Grab current 
view.frame = CGRect(x: f.origin.x, y: f.origin.y, width: f.width, height: 200); 
関連する問題