2012-07-09 6 views
0

UITableView 셀을 서브 클래 싱했습니다. 프로그래밍 방식으로 UITextField를 추가하고 싶습니다. 텍스트 필드를 만드는 방법을 알아 냈습니다. 그러나 장치를 회전시킬 때 크기를 조정하는 데 어려움이 있습니다. 여기 내 코드는UITableViewCell 내부 UIViews 자동 작성

self.myTextField = [[UITextField alloc] init]; 
self.myTextField.frame = CGRectMake(400, 6,TEXT_FIELD_WIDTH ,TEXT_FIELD_HEIGHT); 
[self addSubview:self.myTextField]; 
self.myTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin; 

내가 원하는 것은 관계없이 방향입니다 (self가있는 UITableViewCell 하위 클래스가 있음을 유의하십시오), 텍스트 필드는 (포인트 400 정도) 화면 중앙의 주위에서 X 원점을 가지고 오른쪽 화면 가장자리와의 거리를 유지하고 그렇지 않으면 너비를 확장하려고합니다 (유연한 왼쪽 여백).

autoresizingMask 줄을 주석 처리하고 세로로 장치를 시작하면 정상적으로 작동합니다. 그러나 autoresizing 줄을 다시 추가 할 때마다 텍스트 입력란을 점 400에서 멀리 이동합니다. 인물에서도 마찬가지입니다.

제안 사항? 나는 또한 콘텐츠 뷰에 ​​텍스트 필드를 추가하려고 시도했지만, 이것은 아무 것도 변경하지 않는 것처럼 보입니다.

편집 : layoutsubviews 메서드를 사용하는 방법에 대해 생각해 보았습니다. 그러나 이것은 다른 좌표계 전체를 하드 코딩해야하기 때문에 다소 어려웠습니다. 따라서이를 수행하는 또 다른 방법이 있다면, 그것은 선호 될 것입니다.

편집 : 예를 들어, 위해 내가 그것을 약 150

답변

1

당신은 잘못 autoresizingMask를 설정하는의 프레임 xOrigin을주고있다 중순 시작하는 텍스트 필드를 얻을 수 있습니다. 당신이 중간에 그것을 갖고 싶어

self.myTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin; 
+0

그건 내 문제 중 하나 일지 모르지만 여전히 문제를 해결하지 못했습니다. – Nosrettap

1

당신은 400를 하드 안 : 당신처럼 C의 비트 OR 연산자를 사용하여 UIViewAutoresizing에 설명 된 상수를 결합 값을 지정해야합니다. 그냥 self.bounds.size.width * 0.5을 사용하십시오.

현재로서는 확실하지 않지만 두 번째 편집에서는 기본적으로 세로 방향으로 iPhone에 적합한 프레임 (320 점)으로 셀이 초기화되므로 400이 뷰의 초기 경계를 벗어나는 것으로 나타납니다. 텍스트 필드가 처음에는 셀 경계 외부에 있으므로 자동 마스킹 자동 마스크를 사용하여 텍스트 필드를 그대로 유지하려고합니다.

+0

저는 iPad에서 혼란 스럽습니다. – Nosrettap

+0

맞습니다. 나는 당신의 세포가 나중에 기대하고 크기를 조정 한 프레임으로 초기화되지 않았을 것으로 생각한다. 텍스트 필드를 추가하는 메소드에'self.bounds.size.width'를 로깅 해보십시오. – omz