2014-10-14 3 views
0

저는 현재 내 앱에서 일종의 브라우저를 구현하는 중입니다. 그러나 iOS 프로그래밍에 익숙하지 않기 때문에 프로그래밍 방식으로 텍스트 필드의 너비를 변경하는 방법을 알지 못합니다. 현재 구현에서 일어나는 일은 텍스트 필드가 내비게이션 컨트롤러의 뒤로 버튼을 넘는 것입니다. 따라서 왼쪽에 공간을 남기려면 텍스트 필드가 필요합니다.UITextField 너비를 변경 하시겠습니까?

누구든지이 작업을 수행하는 방법을 알고 있습니까? 이것은 가능한가?

/* Create the page title label */ 
UINavigationBar *navBar = self.navigationController.navigationBar; 
CGRect labelFrame = CGRectMake(kMargin, kSpacer, 
           navBar.bounds.size.width - 2*kMargin, kLabelHeight); 
UILabel *label = [[UILabel alloc] initWithFrame:labelFrame]; 
label.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
label.backgroundColor = [UIColor clearColor]; 
label.font = [UIFont systemFontOfSize:12]; 
label.textAlignment = NSTextAlignmentCenter; 
[navBar addSubview:label]; 
self.pageTitle = label; 

/* Create the address bar */ 
CGRect addressFrame = CGRectMake(kMargin, kSpacer*2.0 + kLabelHeight, 
           labelFrame.size.width, kAddressHeight); 
UITextField *address = [[UITextField alloc] initWithFrame:addressFrame]; 
address.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
address.borderStyle = UITextBorderStyleRoundedRect; 
address.font = [UIFont systemFontOfSize:17]; 
address.keyboardType = UIKeyboardTypeURL; 
address.autocapitalizationType =UITextAutocapitalizationTypeNone; 
address.autocorrectionType = UITextAutocorrectionTypeNo; 
address.clearButtonMode = UITextFieldViewModeWhileEditing; 
[address addTarget:self 
      action:@selector(loadRequestFromAddressField:) 
    forControlEvents:UIControlEventEditingDidEndOnExit]; 
[navBar addSubview:address]; 
self.addressField = address; 

답변

2

당신은 frame 속성을 수정하여이 경우 귀하의 UITextField위치와 UI 요소의 크기을 제어 할 수 있습니다.

frameCGRect의 직사각형입니다. 화면의 좌표 공간에서 위치 및 크기를 지정하는 네 가지 구성 요소로 이루어져 있습니다.

처음 두 구성 요소는 xy입니다. 이것은 직사각형의 위치를 ​​나타냅니다. 화면의 왼쪽 상단은 점 (0,0)이므로 사용자 지정 xy 값은이 지점과 관련이 있습니다.

UITextField이 왼쪽에서 너무 먼 것으로 설명한 경우보기의 x 속성을 수정해야합니다. 텍스트 필드의 프레임에있는 x 값을 늘리면 텍스트 필드가 오른쪽으로 이동합니다.

예 : 당신의 UITextField 초기화 (가정의 변수 이름은 address입니다) 이후에 호출하여 다음과 같은 작업을 수행 :

address.frame = CGRectMake(address.frame.origin.x + 10.0, address.frame.origin.y, address.frame.size.width, address.frame.size.width)

이 오른쪽으로 텍스트 필드에 10 점을 이동합니다.

+0

또 다른 질문입니다. 보기가 변경되면 (탐색 컨트롤러 뒤로 버튼) 주소 표시 줄이 사라지지 않습니다. 어떻게해야합니까? – user4114789

관련 문제