簡體   English   中英

使用自動布局時增加UITextField的高度

[英]Increase UITextField height while using Autolayout

我創建了一個UITextField子類,並將其框架設置為自定義高度。

CGRect frame = self.frame;
frame.size.height = 40;
self.frame = frame;

現在,在我的UIViewController nib文件中,我只需拖動一個UITextField對象,然后使用身份檢查器設置其自定義類。 一切正常。 文本字段的高度現在為40。

問題是,當我為此筆尖文件啟用“自動布局”時,文本字段不再保留新高度。 高度再次回到默認值30。

我認為這是因為在筆尖文件中,高度仍為30,並且自動布局將其固定為30。

在使用自動版式時將文本框高度設置為40的解決方案嗎?

編輯:

如果我添加40px高度限制,則必須對項目中的所有筆尖執行此操作。 有解決辦法一次嗎? 可以以編程方式在自定義UITextField類中嗎?

如果需要在代碼中進行更改,請為其輸出一個插座,並將其常量值更改為40。因此,如果您的IBOutlet名為heightCon,請執行以下操作:

self.heightCon.constant = 40;
NSArray *verticalConstraints = 
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(50)-[view(40)]" 
    options:0 metrics:nil views:viewsDictionary];

現在,視圖將從其視圖的頂部起50像素,高40像素。

然后在自定義視圖類的-(void)awakeFromNib方法中,添加行[self addConstraints:verticalConstraints];

視覺格式字符串使用的語言在“視覺格式語言”中進行了描述

終於我找到了路。 我很笨,沒早嘗試。 在我的UITextField自定義類中,我只是替換了以下

CGRect frame = self.frame;
frame.size.height = 40;
self.frame = frame;

[self addConstraint:[NSLayoutConstraint constraintWithItem:self
                                                 attribute:NSLayoutAttributeHeight
                                                 relatedBy:NSLayoutRelationEqual
                                                    toItem:self
                                                 attribute:NSLayoutAttributeHeight
                                                multiplier:0.0f
                                                  constant:40]];

現在,它可以完美運行,而無需在我的UIViewController類中添加任何代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM