두 개의 서브 클래 싱 된 CollectionViewFlowLayouts간에 전환하는 데 문제가 있습니다.사용자 정의 CollectionView 레이아웃 - 할당 취소 된 NSDictionary로 메시지가 전송되었습니다.
내 collectionViewController에서 다음 메소드를 호출
헤더 :
@property (nonatomic, strong) PortraitFlowLayout *portraitFlowLayout;
@property (nonatomic, strong) LandscapeFlowLayout *landscapeFlowLayout;
구현 :
- (LandscapeFlowLayout *)landscapeFlowLayout
{
if (_landscapeFlowLayout == nil) {
_landscapeFlowLayout = [[LandscapeFlowLayout alloc] init];
self.collectionView.collectionViewLayout = _landscapeFlowLayout;
}
[self.collectionView.collectionViewLayout invalidateLayout];
return _landscapeFlowLayout;
}
- (PortraitFlowLayout *)portraitFlowLayout
{
if (_portraitFlowLayout == nil) {
_portraitFlowLayout = [[PortraitFlowLayout alloc] init];
self.collectionView.collectionViewLayout = _portraitFlowLayout;
}
[self.collectionView.collectionViewLayout invalidateLayout];
return _portraitFlowLayout;
}
:
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
if (UIDeviceOrientationIsPortrait(toInterfaceOrientation)) {
self.landscapeFlowLayout = nil;
[self portraitFlowLayout];
NSLog(@"Orientation portrait");
} else {
self.portraitFlowLayout = nil;
[self landscapeFlowLayout];
NSLog(@"Orientation landscape");
}
[self.collectionView.collectionViewLayout invalidateLayout];
}
같은 collectionViewController에서 이 viewController 폼을 다른 viewCont 폼으로 밀어 넣기 때문에 두 레이아웃이 모두 유효하다는 것을 알았습니다. 그리고 가로 및 세로 레이아웃 모두를 사용해 보았습니다. 잘 작동합니다.
방향을 변경할 때 문제가 발생합니다. 첫 번째 방향 변경은 괜찮 았고 레이아웃은 예상대로 변경됩니다. 그러나 그때 회전 때 (경우에 따라서는 다시 회전하고 몇 번 충돌하기 전에 등), 내가 악기의 좀비 템플릿을 추적 할 때 나에게 다음과 같은 오류를 제공합니다 :
이 오류를 더 자세히 추적하려면 어떻게해야합니까? 또는 문제를 해결 하시겠습니까? 어떤 도움이라도 대단히 감사합니다. 세로로 회전시킬 때
편집 문제 만 보인다 사전에 덕분에 발생합니다.
크리스
NSLog 값은 무엇입니까? –
무엇? 죄송합니다. 디버깅에 능숙하지 않습니다. - 콘솔의 로그 출력은 none입니다 ... – Chris
하지만 코드에 NSLog가 있습니다! –