IBでUIViewのサイズを変更できない


87

おそらく単純なものですが、インターフェイスビルダーのxibでUIViewのサイズを変更できない理由がわかりません。

xcodeとサイズインスペクターで新しいビューXIBを作成しました。幅と高さが無効になっており、320 x 460にグレー表示されています。他の2つのビュー(他の2つのタブバーに関連付けられている)のサイズを変更できるので、これは奇妙ですアイテム)。

これが何か関係があるかどうかはわかりませんが、最近SDKを3に更新しました。

ありがとう!

回答:


81

インターフェイスビルダーのステータスバーなどのユーザーインターフェイス要素をシミュレートしている間は、サイズを編集できないと思います。シミュレーション要素が有効になっている場合は、オフにすることもできます。これがなぜなのか正確にはわからないので、これが正確になぜなのかを知っている人からのフィードバックをいただければ幸いです-正当な理由があるはずです。


1
そうだね、ありがとう。xcodeとIBをアップグレードした後、ステータスバーはデフォルトでオンになりました。他の人はそれをオフにしています。

1
Xcode 4.2、iOS 5.0.1と同様に、これは変更されました。以下の私の答えは、これをどのように達成できるかを説明しています。
lol

1
非常に役立ちます。ステータスバーをオフにし、サイズを調整してから、ステータスバーを再びオンにします。
ウォラン

9
この設定は、Xcode 4.3.3のViewController.xibで機能しました:「シミュレートされたメトリック-サイズ:フリーフォーム」。その後、ビューサイズ設定が有効になります。また、「表示モード」スケールを埋めるオプションを削除します(シミュレートされたメトリックのすぐ下)。
defvol 2012

私は本当にこのIDEが嫌いです
Saik Caskey

78

XCode 4.6.3 / 5.0.2でこれを実現するには、以下のスクリーンショットに従う必要があります。

  1. 「ファイルインスペクタ」の下で->チェックを外します Use Auto Layout
  2. 属性セレクターをクリックしFreeformてサイズを選択

これは、tableViewのheaderViewを作成するときに必要です。

ここに画像の説明を入力してください


40

探している部分は、最初のインスペクターパネル(コマンド1)にあります。右上には、シミュレートされたユーザーインターフェイス要素というラベルの付いたセクションがあります。デフォルトでは、ステータスバーはオンになっています。3つすべてがNoneに設定されていることを確認する必要があります。


2
おかげで、これらの回答で時間を大幅に節約できました。誰もがなぜIBがこれを行うのか知っていますか?
グレゴール

どうも。私はそれを探していました。
ナタナブラ2010

すべてのことに注意してください。これは現在、「なし」ではなく「未指定」です。(私はバージョン3.2.3を持っています)
IcyBlueRose 2010

iPadが「

これはビューコントローラーでのみ表示され、ビューでは表示されません
BigBoy1337

26

Xcode 4.2、iOS 5.0.1と同様に、デフォルトのシミュレートされたメトリックには、UIViewControllersの「サイズ」属性を「推測」にシミュレートすることが含まれます。

この属性を「Freeform」に変更すると、ステータスバー(またはその他のシミュレーション)をシミュレートしながら、UIViewControllerに含まれるUIViewのサイズを変更できます。


1
サイズ属性のデフォルトは「Retina 4 Full screen」になりましたが、「Freeform」に変更しても機能します。
Pier-Luc Gendreau 2013年

4

インスペクターに移動し、最初のパネルに移動して(またはcommand-1を押して)、「シミュレートされたユーザーインターフェイス要素」というセクションのステータスバー、トップバー、およびボトムバーとマークされたフィールドを[なし]に変更します。それらを表示するには、小さな三角形をクリックする必要がある場合があります。


1

おかしい同様の問題があります。xibファイルからすべてのビューを削除し、ビューを再度追加しました。ステータスバーを「未指定」に設定して、ステータスバーに対応しないようにします。ビューが追加されると、予想どおり、(0,0,320,480)ではなく、x = 0、y = 0、w = 320 h = 460で作成されます。高さを480に変更し、それをファイルの所有者に接続し、色を変更して、背景との関係で区別できるようにします。画面の上部とビューの間に白い帯があったことに気づきました。私は自分のコードを次のように拡張しました:

#define RECTLOG(rect)(NSLog(@ "" #rect @ "x:%fy:%fw:%fh:%f"、rect.origin.x、rect.origin.y、rect.size.width、rect .size.height));

viewDidLoad内

-(void)viewDidLoad {
    [super viewDidLoad];
    RECTLOG(self.view.frame);
}

ビューはIBから読み込まれたとおりであることがわかります(0、20、320、480)。回避策として、ビューのフレームをself.view.frame = CGRectMake(0、0、320、480);

IB 3.2.5を使用しています

私はこれの小さな修正を知りたいです。


3
参考までに、NSStringFromCGRect(rect)を使用して、CGRectを表す印刷可能な文字列を取得できます。
ベリー

それは素晴らしい参考になった。私はそれをチェックアウトした。実際にCGPointとCGSizeから文字列値を取得することもできる!とても料理してくれてありがとう
FierceMonkey 2012

1

xibファイルの作成時に自動的に作成されたUIViewは、サイジングパネルまたはエッジハンドルからサイズ変更できないことに気付きました。

私がしたことは、別のUIViewを追加し、古いUIViewから新しいUIViewにすべてをドラッグして、古いUIViewを削除することだけでした。

それは私にとって問題を解決しましたが、はい、Appleが解決するインターフェイスビルダーには根本的な問題があると思います(私が間違っていれば誰かが私を修正します)。

XCode 4統合インターフェイスビルダーを使用しています。


0

別の方法で整理しました...

お気に入りのテキストエディターでxibを開き、この行を編集します

        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController">

CompassViewController nib / xibをリンクしようとしているクラス名です。

クラス名を正しいクラス名で編集するだけで完了です;)


0

ここに画像の説明を入力してくださいストーリーボードでUIVIewを選択し、属性インスペクターに移動して、UIVIewのサイズを「推論」ではなく「FreeForm」に変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.