UICollectionView는 상단 여백 추가
엄지 손가락을 가로로 표시하는 UICollectionView 컨트롤을 넣고 싶습니다 (단지 엄지 손가락 한 줄만). 어떤 이유로 UICollectionView는 엄지 손가락을 44 픽셀 아래로 밀어 내므로 "0"높이는 실제로 "44"입니다. 내비게이션 바 높이를 고려하기 위해이 공간을 추가한다고 가정합니다 (그냥 가정합니다). 내 UICollectionView는 화면의 일부에만 있기 때문에이 여백을 원하지 않습니다. 그것을 제거하는 방법이 있습니까?
컬렉션보기의 콘텐츠 삽입에 문제가있을 수 있습니다. self.automaticallyAdjustsScrollViewInsets = NO;
뷰 컨트롤러의 viewDidLoad
메서드 에 추가해보십시오 .
스토리 보드에서도 설정할 수 있습니다.
ViewController를 선택했는지 확인한 다음 "Adjust Scroll View Insets"를 선택 취소합니다.
이 IB / Storyboard 방법이 iOS6에서 수행하는 작업은 테스트하지 않았습니다. 코드 메서드를 사용하여 VC가 메서드에 응답하는지 확인해야합니다.
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
다음을 추가하는 것을 발견했습니다.
self.edgesForExtendedLayout = UIRectEdgeNone;
뷰 컨트롤러에서 UICollectionView를로드하여 작업에 대한 대답을 얻지 못하여 문제를 해결했습니다.
이 답변을 찾은 질문 은 여기 에서 찾을 수 있으며 자동으로 조정 된 스크롤 뷰 삽입, 확장 레이아웃 및 확장 레이아웃의 가장자리의 차이점에 대한 매우 심층적이고 흥미로운 설명을 제공합니다.
읽을만한 가치가 있습니다.
컬렉션 뷰의 Delegate 흐름 레이아웃을 사용하여이 값을 0으로 강제 설정할 수 있습니다.
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}
패딩 값을 수정하십시오.
스위프트 3 :
먼저 viewControllers automaticallyAdjustsScrollViewInsets
를 false 로 설정하고 싶습니다 .
self.automaticallyAdjustsScrollViewInsets = false
그런 다음 그에 따라 가장자리 삽입을 조정할 수 있어야합니다.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
//top, left, bottom, right
return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0)
}
다른 사람들이 언급 했듯이은 iOS 11 이후viewController.automaticallyAdjustsScrollViewInsets
로 더 이상 사용되지 않습니다 . 내 솔루션 ...
Swift 4.2, Xcode 10.1, iOS 12.1 :
어떤 이유로 collectionView.contentSize.height
내 컬렉션 뷰의 해결 된 높이보다 작게 나타납니다. 첫째, 수퍼 뷰 높이의 1/2에 상대적인 자동 레이아웃 제약 조건을 사용했습니다. 이 문제를 해결하기 위해 제약 조건을 뷰의 "안전 영역"에 상대적으로 변경했습니다.
이를 통해 collectionView.contentSize.height
다음을 사용하여 컬렉션 뷰를 세로로 채우도록 셀 높이를 설정할 수 있습니다 .
private func setCellSize() {
let height: CGFloat = (collectionView.contentSize.height) / CGFloat(numberOfRows)
let width: CGFloat = view.frame.width - CGFloat(horizontalCellMargin * 2)
let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = CGSize(width: width, height: height)
}
전에
후
@Sviatoslav 답변과 유사하게 다음을 시도 할 수 있습니다.
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
yourCollectionView.contentOffset = CGPointMake(0, 0);
}
참고 URL : https://stackoverflow.com/questions/19411442/uicollectionview-adds-top-margin
'Nice programing' 카테고리의 다른 글
uitabbarcontroller를 숨기는 방법 (0) | 2020.10.17 |
---|---|
MVC 유효성 검사에 대한 단위 테스트 (0) | 2020.10.17 |
스위치에서 케이스 문으로 배열 사용 (0) | 2020.10.17 |
PHP에서 날짜 시간에 분 추가 (0) | 2020.10.17 |
종료를 호출 한 후 핸드 셰이크를 대기열에 넣을 수 없습니다. (0) | 2020.10.17 |