シンプルな iPhone アプリで、 viewDidLoadの次のコードでレター タイル (UIView
画像と 2 つのラベルを使用したカスタム)を表示します。
DraggedTile *tile = [[[NSBundle mainBundle] loadNibNamed:@"DraggedTile"
owner:self
options:nil] firstObject];
tile.frame = CGRectMake(10 + arc4random_uniform(100),
10 + arc4random_uniform(100),
kWidth,
kHeight);
[self.view addSubview:tile];
これは問題なく動作しますが、より大きな幅と高さのパラメーターをCGRectMake
.
そのため、Xcode 5.1 Interface Builder で を開き、DraggedTile.xib
「自動レイアウト」を有効にします。
次に、親の左、上、右、下の端に制約を追加しますimage
。letter
ラベルについては、letter
「Lines」を 0 に、「Content Compression Resistance Priority」を 1000 に設定しました (ここではfullscreen 1とfullscreen 2 )。
次に、より大きな幅と高さを使用するようにコードを変更します。
tile.frame = CGRectMake(10 + arc4random_uniform(100),
10 + arc4random_uniform(100),
2 * kWidth,
2 * kHeight);
結果は次のとおりです。
背景image
もletter
ラベルも思い通りに伸びたようです。
ただし、ラベルのフォント サイズは大きくなりません。
私は周りを検索しましたが、次のようなものが必要だと思いますtile.letter.adjustsFontSizeToFitWidth = YES
。しかし同時に「自動レイアウト」がオンになっていると使用できません...
私の質問は、「Interface Builder」にフォントサイズを大きくするためのオプションがあるかどうかです。
アップデート:
Interface Builderとコード でフォントサイズを200に設定するというismailgulekの提案を試してみましたが、tile.letter.adjustsFontSizeToFitWidth = YES
有望に見えます(ここではfullscreen ):
letter.bottom
しかし、Interface Builderで制約として 40px を設定したという問題があります。しかし、より大きなタイル フレームが必要な場合はどうすればよいでしょうか。その制約で絶対ピクセル値の代わりにパーセンテージを使用する方法はありますか?
もう 1 つの質問adjustsFontSizeToFitWidth
は、Interface Builder のどこかに設定できるかどうか、またはそのためにソース コードを使用する必要があるかどうかです。「ユーザー定義のランタイム属性」にキーを追加しようとしましたが、実行時にアプリがクラッシュします。