UITextField 높이를 설정하는 방법?


130

을 사용하고 UITextField있습니다. 높이를 높이고 싶지만이 작업을 수행 할 속성을 찾지 못했습니다. 어떻게하면 되나요?

답변:


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

4
그것은 UR IBUITextField 변경 <문자열 키 = "NSFrame"> 속성을 찾을 소스로 개방 .xib에 훨씬 쉽게
HotJard

나는 그것을 시도했지만 그것은 나를 위해 아무것도하지 않았다. 그 줄을 어디에 두나요? initWithNibName 메소드에 넣었습니다.
janex

그것은있는 viewDidLoad 또는 ViewWillAppear / viewDidApper에 있어야합니다
Manjunath

2
는, UITextField의 기본 높이는 사람이 프로그래밍 방식 하나를 추가하고 그것을 기본 높이 싶어하는, 31
simon_smiley

2
@HotJard 스토리 보드 소스의 해킹을 권장하지 않으며 일부 값을 재설정하는 경향이 있습니다. 예를 들어, 텍스트 필드 높이를 이와 같이 설정하고 뷰에 버튼을 추가하고 버튼의 텍스트 크기를 편집하면 뷰의 텍스트 필드가 기본 높이로 되돌아갑니다.
Kevin

212

둥근 사각형 테두리 스타일의 높이를 변경할 수 없습니다. 높이를 설정하려면 Xcode에서 둥근 테두리 이외의 테두리 스타일을 선택하십시오.

여기에 이미지 설명을 입력하십시오


방금 setCornerRadius를 10.0 (또는 기타)으로 수정하고 테두리 스타일은 있지만 사용자 지정 높이가있는 UItextField를 다시 얻었습니다.
Beto

1
더 좋은 방법은 borderStyle = UITextBorderStyleRoundedRect;
사용되지 않는 Darren

왜 불가능합니까?
apex39

151

나는 마침내 이것에 대한 해결책을 찾았다!

우리가 알다시피, IB는 둥근 모서리 테두리 스타일의 높이를 변경할 수 없습니다. 다른 스타일로 변경하고 원하는 높이를 설정하십시오. 코드에서 테두리 스타일을 다시 변경하십시오.

textField.borderStyle = UITextBorderStyleRoundedRect;

좋은 트릭이지만 어떻게 텍스트를 여러 줄로 표시 할 수 있습니까?
Lucien

7
@Lucien-텍스트 필드가 아닌 TextArea가 아님
Craig

나는 여전히 디자이너를 사용할 수 있기 때문에 이것을 더 좋아합니다.
RiddlerDev

이 작업이 내부에서 수행되는지 확인하십시오 viewWillLayoutSubviews. 나는 leftView텍스트 필드와 일부 텍스트에 이미지를 추가했으며 ,이 작업이 끝나면 viewDidLoad이상하게 늘어납니다.

스위프트 3.0 사용textField.borderStyle = .RoundedRect
Geoherna

85

자동 레이아웃을 사용하는 경우 스토리 보드에서 자동 레이아웃을 수행 할 수 있습니다.

텍스트 필드에 높이 제한을 추가 한 다음 높이 제한 상수를 원하는 값으로 변경하십시오. 단계는 다음과 같습니다.

1 단계 : 텍스트 필드의 높이 구속 조건 작성

여기에 이미지 설명을 입력하십시오

2 단계 : 높이 구속 조건 선택

여기에 이미지 설명을 입력하십시오

3 단계 : 높이 구속 조건 상수 값 변경

여기에 이미지 설명을 입력하십시오


그것은 효과가 있었지만이 새로운 경고, 어떤 아이디어도 얻었습니다 : "라운드 스타일 텍스트 필드"에 대한 위치가 모호합니다
Esqarrouth

Position이 모호하다고 표시되면 UITextField 객체를 배치 할 제약 조건이없는 것입니다. x와 y를 정의하기 위해 제약 조건을 추가 할 수 있습니까? 예를 들어 선행 공간 제약 조건 (x의 경우)을 추가하고 상단에서 수직 공간 제약 조건을 추가 할 수 있습니다.
user1046037

stackoverflow.com/questions/21295136/… 그렇게하면 인쇄 화면을 추가했습니다
Esqarrouth

설정 : 올바른 높이 사용하는 글꼴에 대한 제약 찾기위한 팁 borderStyle아무것도를 제외하고 둥근. Editor -> Size to Fit Content레이아웃이 그 일을하도록 사용하십시오 . UITextField높이를 확인 하려면 속성 관리자를 사용하십시오 . 이것을 사용하여 높이 제한을 설정하면 이제 borderStyle둥근 모서리로 다시 변경할 수 있습니다 .
Benjohn

프로그래밍 방식으로 할 수 있습니까?
LKM

30

1.) InterfaceBuilder에서 테두리 스타일을 변경하십시오.

여기에 이미지 설명을 입력하십시오

2.) 그런 다음 크기를 변경할 수 있습니다.

여기에 이미지 설명을 입력하십시오

3.) TextField에 IBOutlet을 viewDidLoad()만들고 BorderStyle을 다시 변경하려면 다음 코드를 입력하십시오 .

textField.borderStyle = UITextBorderStyleRoundedRect;

스위프트 3 :

textField.borderStyle = UITextBorderStyle.roundedRect

감사합니다 @David Seek
Vinoth Vino

29
  1. 둥글 지 않은 테두리 스타일을 선택하십시오

여기에 이미지 설명을 입력하십시오

  1. 키 설정

여기에 이미지 설명을 입력하십시오

모서리에서 둥근 모서리를 설정하십시오

yourUITextField.borderStyle = UITextBorderStyleRoundedRect;

여기에 이미지 설명을 입력하십시오

  1. 둥글고 키가 큰 UITextField를 즐기십시오

큰!! 그것은 나를 도왔다.
Augustine PA

1
이것은 훌륭했습니다. 빠른 3/4로 사용해야했습니다 ......... yourTextField.borderStyle = UITextBorderStyle.roundedRect
Tony Merritt

1
그것은 UITextField.BorderStyle.roundedRect로 변경
SMJ

14

이 두 가지 간단한 단계를 따라 높이를 높이십시오 UItextField.

1 단계 : XIB 파일을 마우스 오른쪽 버튼으로 클릭하고 "소스 코드"에서와 같이 엽니 다.

2 단계 : 동일한 UITextfield소스를 찾고 원하는대로 프레임을 설정하십시오.

이 단계를 사용하여 모든 Apple 컨트롤의 프레임을 변경할 수 있습니다.


1
재미 있지만 이것은 가장 좋은 방법입니다 :)
VisioN

4
높이 설정 위치를 찾으려고 시도하는 다른 프로그래머에 대해 생각할 때 가장 좋은 방법은 아닙니다
bucherland

1
이것은 끔찍한 생각처럼 들립니다. XIB 소스를 개인 API로 고려해야합니다. 이후 버전의 Xcode에서는 변경 될 수 있습니다. 말할 것도없이, 제정신이있는 사람은 나중에 그것을 찾을 수있는 마지막 장소에서 사용자 정의를 숨겼습니다.
Michael Peterson

8

iOS 6 업데이트 : 자동 레이아웃 사용, 여전히 인터페이스 빌더의 크기 검사기에서 UITextField의 높이를 설정할 수는 없지만 (최소한 Xcode 4.5 DP4 기준) 이제 높이 제약 조건을 설정할 수 있습니다 인터페이스 빌더에서 편집 할 수 있습니다.

또한 코드로 프레임 높이를 설정하는 경우 자동 레이아웃은 뷰의 다른 제약 조건에 따라 프레임을 재설정 할 수 있습니다.


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

나는 이것이 오래된 질문이라는 것을 알고 있지만 IB 내부에서 UITextField의 높이를 쉽게 변경하고 UITextfield의 테두리 유형을 기본 둥근 모서리 유형 이외의 다른 유형으로 변경하려는 경우 추가하고 싶었습니다. 그런 다음 편집기 내부에서 높이 속성을 쉽게 늘리거나 변경할 수 있습니다.


4

swift3

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

인터페이스 빌더

  • 교체 UITextField와 함께 BigTextField.
  • 변화 Border Style 에를 none.

이것이 지금까지 가장 좋은 솔루션입니다.
ilovebigmacs 2016 년

3

이 바보 같은 문제에 대한 나의 한심한 기여. IB에서 스타일을 none으로 설정하여 높이를 설정할 수 있고, IB에서 클래스를 UITextField스타일의 둥근 클래스로 만드는 하위 클래스로 설정하십시오 .

@interface JLTForcedRoundedRectTextField : UITextField
@end

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

XIB 파일을 해킹하거나 스타일 컨트롤러를 뷰 컨트롤러에 작성하지 않아도되었습니다.



2

UITextField의 높이는 기본 둥근 모서리 테두리 스타일이있는 경우에만 속성 관리자에서 조정할 수 없지만 높이 구속 조건 (자동 레이아웃 시스템을 충족시키는 데 필요한 다른 구속 조건-종종 누락 된 구속 조건 추가를 사용하여)을 추가하고 구속 조건을 조정하면 텍스트 필드의 높이가 조정됩니다. 구속 조건을 원하지 않으면 구속 조건을 제거 할 수 있으며 (지우기 구속 조건) 텍스트 필드는 조정 된 높이로 유지됩니다.

매력처럼 작동합니다.


1

이 시도

UITextField *field = [[UITextField alloc] initWithFrame:CGRectMake(20, 80, 280, 120)];

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

마지막 두 인수는 너비와 높이이며 원하는대로 설정할 수 있습니다 ...


1

텍스트 필드의 프레임 속성을 사용하여 프레임을 변경할 수 있습니다. Like-Textfield.frame = CGRECTMake (x 축, y 축, 너비, 높이)


1

이것은 매우 간단합니다.

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

텍스트 필드를 gloabal 속성으로 선언하고 코드에서 원하는 위치로 프레임을 변경하십시오.

행복한 코딩!


2
이것은 위험하고 오래된 답변입니다. 전역 변수를 사용하는 것은보기보다 오래 지속될 것이라는 점을 고려할 때 끔찍한 관행이며 유연한 레이아웃에서는 크기를 하드 코딩하지 못할 것입니다.
Chris Conover

1

많은 것을 생성하는 경우을 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.