나는 UITableView
이 포함 된 팝업이 있습니다. 스토리 보드에서 전체 테이블에 맞게 팝업 높이를 설정 했으므로 멋지게 표시됩니다. 그러나 일부 상황에서는 더 적은 셀을 표시해야하며이 경우 팝업 창의 높이를 변경하고 싶습니다. 나는 이렇게 :contentSizeForViewInPopover가 애니메이션 화되지 못하도록 방지
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (trimFourCells) { // reduce the popover's height by that of four cells
CGSize size = self.contentSizeForViewInPopover;
size.height -= 4*60;
self.contentSizeForViewInPopover = size;
}
}
변화가 생기있는 것을 제외하면 그것은 효과적이다 : 첫째로 가득 차있는 크기는 보여지고, 그 후에 대략 1 초에서 응축한다.
제 질문은이 애니메이션을 비활성화 할 수 있는지 여부입니다.
에 NO
을 전달하려고 시도했지만 크기가 변경된 후에도 해당 행을 이동하려고 시도했습니다. 그것은 애니메이션을 막지 못했습니다. 그런 다음 코드를 viewWillAppear
으로 옮기려고 시도했지만 높이를 변경하지 않았습니다. 여기에 솔루션입니다, @frowing에
[popoverController setPopoverContentSize:size animated:NO];
감사합니다. 이것은 문제를 해결했지만, 플리커의 새로운 문제를 야기합니다. popover는 전체 크기로 표시되고 나면 나중에 다시 크기가 조정됩니다. 크기를 조정 한 후에'[super viewDidAppear : animated]'줄을 옮겨서이 문제를 해결하려고했지만 도움이되지 않았습니다. '- (void) viewDidAppear : (BOOL) animated'가 호출 될 때까지 팝업이 이미 전체 크기로 표시되어 있으므로 크기 조정을 미리 수행해야합니다. – cshavit
popover를 표시하기 전에 컨텐츠 크기를 설정하십시오. 'viewDidAppear :'메소드에서 크기 조정 코드를 제거하십시오. –
고마워요. 'viewDidAppear :'에서'viewWillAppear :'로 코드를 옮겼습니다. 나는'[super viewWillAppear : animated]; 줄 앞에 그리고 그 다음 줄 뒤에 넣으려고했다. 두 경우 모두 크기 조정이 전혀 발생하지 않았습니다. 'setPopoverContentSize : (CGSize) size animated : (BOOL) animated' 은'viewWillAppear :'내부에서 호출 될 때 아무런 영향을 미치지 않는 것 같습니다. 마찬가지로,'viewWillAppear :'에 직접 컨트롤러의 크기를 설정하는 것은'ctrl.popoverContentSize = size;'처럼 효과가 없습니다. popover가 표시되기 전에 크기를 조정할 방법을 찾을 수 없으므로 분명히 놓친 것입니다. 나는 후에 크기를 조정할 수 있습니다. – cshavit