UITextFieldの高さを設定する方法は?


130

を使用していUITextFieldます。高さを増やしたいのですが、これを行うためのプロパティが見つかりません。どうすればこれを達成できますか?

回答:


83
CGRect frameRect = textField.frame;
frameRect.size.height = 100; // <-- Specify the height you want here.
textField.frame = frameRect;

4
ソースがur IBUITextFieldを見つけて<string key = "NSFrame">プロパティを変更すると、.xibを開いてより簡単にできる
HotJard

私はそれを試しましたが、それは私のために何もしませんでした。あなたはそれらの行をどこに置きますか?initWithNibNameメソッドに入れました。
janex 2013年

viewDidLoadまたはViewWillAppear / viewDidApperにある必要があります
Manjunath

2
UITextFieldののデフォルトの高さは、誰でもプログラム的に1を追加し、それをデフォルトの高さは望むために、31である
simon_smiley

2
@HotJardストーリーボードのソースをハッキングしないことをお勧めします。値の一部がリセットされる傾向があります。たとえば、テキストフィールドの高さをそのように設定し、ボタンをビューに追加してボタンのテキストサイズを編集すると、ビューのテキストフィールドはデフォルトの高さに戻ります。
Kevin

212

丸みを帯びた長方形のボーダースタイルの高さは変更できません。高さを設定するには、Xcodeで丸い境界線以外の境界線スタイルを選択します。

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


ただ、10.0(または任意の)でsetCornerRadiusを変更して、あなたは:)境界線スタイルではなく、カスタムの高さで再びUITextFieldのだ
ベト

1
より良い方法は、borderStyle = UITextBorderStyleRoundedRect;です。
推奨となったDarren

なぜそれができないのですか?
apex39

151

私はこれの修正をついに見つけました!

私たちが発見したように、IBでは、角の丸いボーダースタイルの高さを変更することはできません。したがって、それを他のスタイルのいずれかに変更し、希望の高さを設定します。コードでボーダースタイルを元に戻します。

textField.borderStyle = UITextBorderStyleRoundedRect;

良いトリックですが、テキストを複数行で表示するにはどうすればよいですか?
Lucien 2013年

7
@Lucien-それはテキストフィールドではなくTextAreaではないでしょう
クレイグ

私はデザイナーをまだ使用できるので、私はこれがさらに好きです。
RiddlerDev 2014年

これが内で行われることを確認してくださいviewWillLayoutSubviewsleftViewテキストフィールドといくつかのテキストに画像を追加しましたviewDidLoad。これを行うと、両方が奇妙に伸びます。

Swift 3.0の使用textField.borderStyle = .RoundedRect
Geoherna

85

自動レイアウトを使用している場合は、ストーリーボードで実行できます。

テキストフィールドに高さ制約を追加してから、高さ制約定数を任意の値に変更します。手順を以下に示します。

ステップ1:テキストフィールドの高さの制約を作成する

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

ステップ2:高さ制約を選択

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

ステップ3:高さ制約の定数値を変更する

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


機能しましたが、この新しい警告、任意のアイデアが表示されました。「丸型テキストフィールド」の位置が不明確です
Esqarrouth

Positionがあいまいである場合は、UITextFieldオブジェクトを配置するための制約がない可能性があります。xとyを定義する制約を追加してみてください。たとえば、先行スペース制約(xの場合)を追加したり、上から垂直スペース制約を追加したりできます。
user1046037 2014年

stackoverflow.com/questions/21295136/…その ときに、印刷画面を追加しました
Esqarrouth 2014年

使用しているフォントの正しい高さの制約を見つけるためのヒント:丸み帯びborderStyleたもの以外に設定します。Editor -> Size to Fit Contentレイアウトにその働きをさせるために使用します。のプロパティインスペクターを使用して、UITextFieldその高さを確認します。これを使用して高さの制約を設定すると、borderStyle背中を丸みのあるものに変更できます。
ベンジョン

プログラムで行うことはできますか?
LKM

30

1.)InterfaceBuilderでボーダースタイルを変更します。

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

2.)その後、サイズを変更できます。

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

3.)TextFieldにIBOutletを作成し、次のコードを入力しviewDidLoad()てBorderStyleを元に戻します。

textField.borderStyle = UITextBorderStyleRoundedRect;

スウィフト3:

textField.borderStyle = UITextBorderStyle.roundedRect

ありがとう@David Seek
Vinoth Vino 2017

29
  1. 丸めないボーダースタイルを選択します

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

  1. 身長を設定してください

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

あなたのviewWillAppearで角を丸く設定してください

yourUITextField.borderStyle = UITextBorderStyleRoundedRect;

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

  1. 丸くて背の高いUITextFieldをお楽しみください

すごい!!それは私を助けました。
オーガスティンPA

1
これは素晴らしかった、それは私が使用しなければならなかった迅速な3/4に役立ちました、...... yourTextField.borderStyle = UITextBorderStyle.roundedRect
Tony Merritt

1
UITextField.BorderStyle.roundedRectに変更されました
smj

14

次の2つの簡単な手順に従って、の高さを増やしてくださいUItextField

ステップ1: XIBファイルを右クリックして、「ソースコード」のように開きます。

手順2:同じUITextfieldソースを見つけて、必要に応じてフレームを設定します。

これらの手順を使用して、アップルコントロールのフレームを変更できます。


1
おかしいですが、これが最善の方法です:)
VisioN 2013

4
高さが設定されている場所を見つけようとしている他のプログラマについて考えるとき、これは最良の方法ではありません
bucherland

1
これはひどい考えのように聞こえます。XIBソースをプライベートAPIと見なす必要があります。Xcodeの将来のバージョンでは、あなたの下から変更される可能性があります。言うまでもなく、あなたは最後にカスタマイズを隠しました。将来、正気な人はそれを探します。
マイケルピーターソン、

8

iOS 6のアップデート:インターフェイスビルダーのサイズインスペクターからUITextFieldの高さを設定できない場合でも(少なくともXcode 4.5 DP4以降)、高さの制約をオンに設定できるようになりましたこれは、Interface Builderから編集できます。

また、フレームの高さをコードで設定している場合、ビューにある他の制約によっては、自動レイアウトによってフレームの高さがリセットされることがあります。


1
これは私が探しているものですが、UITextFieldのコンテンツに基づいて高さが動的に拡張されるように高さ制約を設定するにはどうすればよいですか?
jbandi

func updateTextFields(){if #available(iOS 11、*){} else {nameTextField.borderStyle = .line nameTextFieldHeight.constant = nameTextField.sizeThatFits(CGSize(width:1000、height:500))。height nameTextField.borderStyle =。 roundedRect}}私が設定しているアダプティブフォントに基づいて、roundBorder textFieldsの高さを調整します。これはそのままiOS 11で機能しますが、iOS 9、10ではまったく機能しません。私は次のコードを使用します
。– PhoneyDeveloper

6

これは古い質問ですが、UITextFieldの高さをIB内から簡単に変更したい場合は、そのUITextfieldの境界線の種類をデフォルトの角の丸い種類以外に変更するだけでいいので、追加したいと思います。その後、エディタ内から高さ属性を簡単にストレッチまたは変更できます。


4

swift3

@IBDesignable
class BigTextField: UITextField {
    override func didMoveToWindow() {
        super.didMoveToWindow()
        if window != nil {
            borderStyle = .roundedRect
        }
    }
}

インターフェースビルダー

  • 交換してくださいUITextFieldBigTextField
  • をに変更Border Stylenoneます。

これは断然最良の解決策です。
ilovebigmacs 2017年

3

この愚かな問題への私の哀れな貢献。IBでスタイルをnoneに設定して高さを設定できるようにし、次にIBでクラスをそのサブクラスに設定しUITextFieldてスタイルを強制的に丸めた四角形にします。

@interface JLTForcedRoundedRectTextField : UITextField
@end

@implementation JLTForcedRoundedRectTextField
- (void)awakeFromNib
{
    self.borderStyle = UITextBorderStyleRoundedRect;
}
@end

XIBファイルをハッキングしたり、ビューコントローラーにスタイルコードを書き込んだりする必要がなくなりました。



2

UITextFieldの高さは、デフォルトの角丸ボーダースタイルがある場合にのみ属性インスペクターで調整できませんが、高さの制約(および自動レイアウトシステムを満たすために必要なその他の制約-多くの場合、単に[欠けている制約の追加]を使用して)を追加します。制約を調整すると、テキストフィールドの高さが調整されます。制約が必要ない場合は、制約を削除して(Clear Constraints)、テキストフィールドを調整後の高さに維持できます。

魅力のように機能します。



1
UITextField *txt = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
    [txt setText:@"Ananth"];
    [self.view addSubview:txt];

最後の2つの引数は幅と高さです。必要に応じて設定できます...


1

テキストフィールドのフレームプロパティを使用して、フレームを変更できますLike-Textfield.frame = CGRECTMake(x axis、y axis、width、height)


1

これは非常に簡単です。

yourtextfield.frame = CGRectMake (yourXAxis, yourYAxis, yourWidth, yourHeight);

テキストフィールドをグローバルプロパティとして宣言し、コード内で必要な場所でフレームを変更します。

ハッピーコーディング!


2
これは危険で時代遅れの答えです。グローバル変数を使用することは、ビューが長持ちすることを考えるとひどい習慣であり、サイズをハードコーディングすると、柔軟なレイアウトではうまくスケーリングできません。
Chris Conover、2015年

1

たくさん作成している場合は、s UITextFieldsをサブクラス化しUITextViewてsetFrameメソッドをオーバーライドする方が簡単です。

-(void)setFrame:(CGRect)frame{
    [self setBorderStyle:UITextBorderStyleRoundedRect];
    [super setFrame:frame];
    [self setBorderStyle:UITextBorderStyleNone];
}  

このように、あなたはただ電話することができます
[customTextField setFrame:<rect>];


0

私は同じ問題を抱えていました。ここでいくつかの解決策を試しましたが、このすべてのジャンボジャンボを行うのではありません。高さの制約を設定するだけで十分であることがわかりました。

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