2012-12-12 5 views
1

프로그래밍 방식으로 내 UICollectionView을 설정하고 있습니다. 모든 앱이 내게 적합하지만 내 앱을 테스트 할 때 세로 및 가로 모두 이상한 간격이 있습니다. 컬렉션보기를 설정하는 내 LibraryViewController 클래스는 여기에서 찾을 수 있습니다 : LibaryViewController class. 내 LibraryCell 초기화는 다음과 같습니다UICollectionView 레이아웃 간격 문제. 셀 사이의 공간이 너무 큽니다.

- (id)initWithFrame:(CGRect)frame 
{ 
NSLog(@"Init called"); 
NSLog(@"%@", NSStringFromCGRect(frame)); 
self = [super initWithFrame:frame]; 
if (self) { 
    // Initialization code 
    imageView = [[UIImageView alloc] initWithFrame:frame]; 
    [self.contentView addSubview:imageView]; 
} 
return self; 
} 

은 그래서 때마다이 셀을 설정, 나는 그것이 프레임이 뭔지보고있다. 재미있는 점은이 값들이 올바른 것처럼 보입니다.

2012-12-12 11:08:48.333 ARApp2[16330:907] Init called 
2012-12-12 11:08:48.335 ARApp2[16330:907] {{10, 10}, {80, 120}} 
2012-12-12 11:08:48.341 ARApp2[16330:907] Loaded image0.png 
2012-12-12 11:08:48.349 ARApp2[16330:907] success 
2012-12-12 11:08:48.352 ARApp2[16330:907] Init called 
2012-12-12 11:08:48.354 ARApp2[16330:907] {{120, 10}, {80, 120}} 
2012-12-12 11:08:48.358 ARApp2[16330:907] Loaded image1.png 
2012-12-12 11:08:48.365 ARApp2[16330:907] success 
2012-12-12 11:08:48.368 ARApp2[16330:907] Init called 
2012-12-12 11:08:48.370 ARApp2[16330:907] {{230, 10}, {80, 120}} 
2012-12-12 11:08:48.375 ARApp2[16330:907] Loaded image2.png 
2012-12-12 11:08:48.382 ARApp2[16330:907] success 

을하지만 당신은 화면에 결과를 볼 때, 그것은 다음과 같습니다 : Screenshot이 컬렉션 네 개의 항목이 다음 그 프레임이 올바른 위치에 표시처럼 내 로그 파일의 일부 모습입니다 그 안에. 처음 세 개는 첫 번째 줄에 있으므로 세 번째 줄도 보지 못합니다. 다음 네 번째 행은 다음 행을 시작하지만 내가 원하는 것보다 낮습니다. 누구나 왜이 셀들이 멀리 떨어져 있는지 볼 수 있습니까?

+0

"셀프"란 무엇입니까? 어떤 객체의 initWithFrame을 호출하고 있습니까? 보기의 하위보기에 (0,0)으로 시작하는 자체 좌표계가 있음을 알고 있습니까? 이 객체 (일부 UIView 하위 클래스)가 10,10 및 (무언가)의 프레임을 가지고 있고 하위 뷰를 (10, 10) 및 (무언가, 무언가)와 추가하면 하위 뷰는 (20, 20). 두 번째 하위보기는 "자기"의 수퍼 뷰 좌표 시스템에서 (240, 20)에 시작합니다. –

답변

3

imageView = [[UIImageView alloc] initWithFrame:frame];

이 줄은 문제가 될 것으로 보인다. 이미지 뷰는 {(0,0), (80,120)}으로되어 있지만 수퍼 뷰의 프레임을 이미지의 프레임으로 지정하므로 수퍼 뷰가 {(120, 10), (80, 120)}하지만 이미지에는 동일한 오프셋과 크기가있어 미친 간격을줍니다.

tl; imageview가 전체 superview를 차지해야하므로 imageView 프레임을 self.bounds로 설정하십시오.

+1

또는 전체 공간을 채우는 하위 뷰를 추가하는 올바른 방법 인 self.bounds를 사용하십시오. – jrturton

+0

맞습니다. 각 이미지에 대해 전체 프레임이 활용되므로 self.bounds가 올바른 방법입니다. – Stakenborg

+0

감사! 이것은 실제로 문제였습니다. – user1040854