UICollectionViewCell의 내용을 왜곡하지 않고 하나의 축을 따라 크기를 조정하려고합니다.내용을 왜곡하지 않고 하나의 축을 따라 UICollectionViewCell의 크기를 조정하려면 어떻게해야합니까?
UICollectionViewLayoutAttributes layoutAttributesForItemAtIndexPath 및 layoutAttributesForElementsInRect와 관련된 비슷한 문제에 대한 답변을 읽었습니다. 나는 또한 UICollectionViewCell 서브 클래스에서 initWithFrame과 awakeFromNib을 사용해 보았다. UIViewContentMode를 해당 메서드에서 UIViewContentModeScaleAspectFit 또는 UIViewContentModeScaleAspectFill로 설정하려고 시도했지만 효과가 없습니다.
지금까지 하나의 축을 따라 스트레칭을하면 왜곡 된 텍스트가 표시됩니다. 그래서
...
나는 XIB에 정의의 세포와 UICollectionView 있습니다. 현재 셀에는 UILabel 만 있습니다.
self.flowLayout = [[UICollectionViewFlowLayout alloc] init];
[self.flowLayout setMinimumLineSpacing:1.0f];
[self.flowLayout setItemSize:CGSizeMake(self.cellSize.width, self.cellSize.height)];
[self.flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[self.collectionView setCollectionViewLayout:self.flowLayout];
UICollectionView가있는 UIScrollView 내부에 내장되어, 스크롤 뷰의 크기 안에 정확히 맞는 : 컬렉션 뷰는 약간의 지정을 할 UICollectionViewFlowLayout를 사용합니다. 스크롤보기 크기는 양방향으로 화면보다 훨씬 크게 설정됩니다. 하드 코딩 된 숫자는 테스트 용입니다. 나는 나중에 그들을 적절한 상수로 바꿀 것이다.
self.cellSize = CGSizeMake(150.0f, 150.0f);
CGSize scrollViewSize = self.scrollView.contentSize;
scrollViewSize.width = 20 * self.cellSize.width + 20.0f;
scrollViewSize.height = 20 * self.cellSize.height + 20.0f;
self.scrollView.contentSize = scrollViewSize;
self.collectionViewHeightConstraint.constant = self.scrollView.contentSize.height;
self.collectionViewWidthConstraint.constant = self.scrollView.contentSize.width;
결과는 임의의 방향으로 스크롤 할 수있는 격자입니다. 그 부분이 효과가 있습니다.
그리드는 한 번에 하나의 축을 따라 비례 또는 신축성이 있어야합니다. 나는 하나의 축 줌 일어날 수 있도록 다음과 같은 핀치 제스처 인식기를 사용하고 (다시, Y에 대한 하드 코딩 된 1.0 값은 단지 테스트 용입니다) :
- (IBAction)handlePinchGesture:(UIPinchGestureRecognizer *)recognizer
{
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, 1.0);
recognizer.scale = 1;
}
내가 핀치 제스처와 컬렉션 뷰의 크기를 조정, 각 셀의 레이블이 늘어나고 변형됩니다. 화면 캡처는 다음과 같습니다. deformed collection view http://afterburnerimages.com/IMG_0078.PNG
다른 관련 정보를 기꺼이 제공하고 모든 도움을드립니다.
오류가 발생하는 것이 분명하지 않다. 하나의 차원 만보기로 늘리면 그 안에있는 모든 것이 한 차원으로 늘어나고 왜곡됩니다. 이것은 단지 기본 기하학이며 프로그래밍과는 아무런 관련이 없습니다. 라벨에있는 텍스트와 정확히 일치하는 부분은 무엇입니까? – rdelmar
셀의 가로 세로 비율이 변경되는 경우에도 레이블의 가로 세로 비율을 유지하고 싶습니다.필자가 생각한 두 가지 옵션은 레이블의 크기를 셀 크기와 동일하게 유지하거나 셀이 없을 때 레이블을 비례 적으로 늘리는 것입니다. 나는 라벨의 뷰를 셀의 뷰와 별도로 제어하기를 바라고있다. –