사용자보기에 응답하여 서브 뷰의 프레임을 동적으로 변경해야하는보기가 있습니다. 뷰가로드 될 때, 나는 그것의 서브 뷰는 다음과 같이 초기화 : 다음iOS 앱에서 서브 뷰 프레임을 동적으로 변경하기
if (self.firstSubview == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"FirstSubView" owner:self options:nil];
for (UIView *view in views) {
self.firstSubview = view;
}
}
를 실행 한 다음, 나는 서브 뷰의 프레임을 수정할 때
일단 초기화[self.view addSubview:self.firstSubview];
, 나는 같은 것을 할 :
self.firstSubview.frame = CGRectMake(0, 80, self.firstSubview.frame.size.width, 200);
내가하고 싶은 것은 사용자가 버튼을 탭했을 때 서브 뷰의 Y 좌표와 높이를 조정하고 사용자가 버튼을 다시 탭하면 서브 뷰의 원래 프레임을 다시 가져 오는 것입니다. 그러나 때로는 이것이 작동하지 않는 것을 발견하고, Y 좌표와 높이가 항상 CGRectMake
함수에서 설정 한 것처럼 설정되지 않는 것 같습니다. 함수가 절대 값을 가져 가지 않는 것처럼 보입니다. 마지막 프레임의 값에 의존합니다 ...이 함수 호출 후에 프레임이 항상 Y = 80 좌표를 갖는 것처럼 보입니다.
어쩌면 나는이 작품의 방식을 오해하고있다.보기의 nib
파일에서 상단 및 하단 막대를 Simulated Metrics
에 설정 했으므로보기의 높이가 막대와 (0,0) 좌표는 위쪽 막대 바로 아래 왼쪽 상단이어야합니다. 내가 빠진 것이 있습니까? 다시 초기화해야 프레임을 바꿀 때마다 서브 뷰를 다시 추가해야합니까? 아니면 프레임의 변경 사항을 적용하기 위해해야 할 일이 있습니까? 사전에
감사
없음 각 시간에 서브 뷰를 다시 초기화 안 이것은 당신이 여기에 간단한 방법은, 원하는 정말 있다면? 귀하의 하위보기에 nib 파일을 사용합니까? 시뮬레이션 된 측정 항목도 포함되어 있습니까? – streem
예, 시뮬레이션 된 메트릭 세트가없는 다른 'nib'파일에 내 서브 뷰가 있습니다 ... – AppsDev