2012-07-04 3 views
4

UILabelleftView, UITextField으로 사용하고 있습니다. 문제는 textField의 텍스트가 라벨의 텍스트보다 높다는 것입니다. UITextField의 leftView로 사용되는 UILabel을 textField의 텍스트와 세로로 정렬하는 방법은 무엇입니까?

나는

가 어떻게 모두 텍스트를 정렬 할 수 있습니다 ... 지금까지

UILabel *startsWith = [[UILabel alloc] init]; 
startsWith.font = [UIFont systemFontOfSize:14]; 
startsWith.textColor = [UIColor blackColor]; 
startsWith.backgroundColor = [UIColor clearColor]; 
startsWith.text = @"Text"; 
[startsWith sizeToFit]; 
self.textField.leftViewMode = UITextFieldViewModeAlways; 
self.textField.leftView = startsWith; 

내가 레이블의 프레임을 변경하는 약간 시도했지만 작동하지 않았다 코드를 사용한 적이 있습니까?

+1

당신은'서브 클래스 UITextField' 다음'무시 시도해 볼 수도 있습니다 - (CGRect) leftViewRectForBounds을' – sooper

답변

5

UILabel 1px를 배치하는 컨테이너보기를 만들 수 있습니다.

UIView * v = [[UIView alloc] init]; 
    v.backgroundColor = [UIColor clearColor]; 

    UILabel *startsWith = [[UILabel alloc] init]; 
    startsWith.font = self.textfield.font; 
    startsWith.textAlignment = self.textfield.textAlignment; 
    startsWith.textColor = [UIColor blackColor]; 
    startsWith.backgroundColor = [UIColor clearColor]; 
    startsWith.text = @"Text"; 
    [startsWith sizeToFit]; 

    startsWith.frame = CGRectOffset(startsWith.frame, 0, -1); 
    v.frame = startsWith.frame; 
    [v addSubview:startsWith]; 
    self.textfield.leftViewMode = UITextFieldViewModeAlways; 
    self.textfield.leftView = v; 
+0

을 그것은 완벽하게 작동합니다! 고맙습니다! 레이블과 텍스트 입력 간의 가로 간격을 줄이는 방법이 있습니까? – Moxy

+1

여러분을 환영합니다. 어쩌면 왼쪽 뷰의 너비를 줄여서 줄일 수 있습니다.이 경우 v 프레임입니다. 지금은 테스트 할 수 없습니다. 좀 더 특별한 기능이 필요하다면 서브 클래 싱과 메소드 오버라이드가 가장 좋은 방법 일 것입니다. [여기] (http://stackoverflow.com/questions/2694411/text-inset-for-uitextfield)를보십시오. – Templar

+0

왼쪽 뷰의 너비가 축소되었습니다! 다시 한 번 감사드립니다! – Moxy

관련 문제