나는 UIScrollView
많은 UIImageView
s, UILabels 등 을 포함하고 있습니다 … 라벨이 훨씬 길지만 UIScrollView
앱을 실행할 때 클릭하고 아래로 스크롤 할 수 없습니다 …
왜 이것이 될 수 있습니까?
감사
답변
항상 완전한 작업 코드 스 니펫을 표시하는 것이 좋습니다.
// in viewDidLoad (if using Autolayout check note below):
UIScrollView *myScrollView;
UIView *contentView;
// scrollview won't scroll unless content size explicitly set
[myScrollView addSubview:contentView];//if the contentView is not already inside your scrollview in your xib/StoryBoard doc
myScrollView.contentSize = contentView.frame.size; //sets ScrollView content size
스위프트 4.0
let myScrollView
let contentView
// scrollview won't scroll unless content size explicitly set
myScrollView.addSubview(contentView)//if the contentView is not already inside your scrollview in your xib/StoryBoard doc
myScrollView.contentSize = contentView.frame.size //sets ScrollView content size
IB에서 contentSize를 설정하는 방법을 찾지 못했습니다 (Xcode 5.0 기준) .
참고 : 자동 레이아웃을 사용하는 경우이 코드를 넣는 가장 좋은 -(void)viewDidLayoutSubviews
방법 은 메서드 안에 있습니다.
답변
contentSize를 올바르게 설정 한 후에도보기를 스크롤 할 수 없으면 Interface Builder-> File Inspector에서 “AutoLayout 사용” 을 선택 취소 하십시오.
답변
contentSize
스크롤보기가 제대로 스크롤 되려면 스크롤보기 의 속성 을 설정해야합니다 .
당신이 자동 레이아웃을 사용하는 경우 설정해야합니다 contentSize
에 viewDidLayoutSubviews
그것이 자동 레이아웃이 완료된 이후에 적용하기 위해.
코드는 다음과 같습니다.
-(void)viewDidLayoutSubviews
{
// The scrollview needs to know the content size for it to work correctly
self.scrollView.contentSize = CGSizeMake(
self.scrollContent.frame.size.width,
self.scrollContent.frame.size.height + 300
);
}
답변
위의 답변은 정확합니다-스크롤을 발생 시키려면 내용 크기를 설정해야합니다.
인터페이스 빌더를 사용하는 경우이를 수행하는 깔끔한 방법은 사용자 정의 런타임 속성을 사용하는 것입니다. 예 :
답변
콘텐츠 크기를 큰 숫자로 조정하십시오. 내용 크기가 제어 크기보다 큰 경우에도 스크롤보기가 스크롤되지 않는 이유를 이해할 수 없었습니다. 콘텐츠 크기가 필요한 것보다 작 으면 작동하지 않는다는 것을 알았습니다.
self.scrollView.contentSize = CGSizeMake(2000, 2000);
2000 대신에 큰 숫자를 입력 할 수 있습니다. 그리고 그것이 작동한다면, 크기를 조정할 때 콘텐츠 크기가 충분하지 않다는 것을 의미합니다.
스크롤보기가 작동하는 데 위임이 필요하지 않습니다.
답변
스크롤보기의 contentSize 속성이 올바른 크기로 설정되어 있는지 확인하십시오 (예 : 모든 내용을 포함하기에 충분한 크기).
답변
‘자동 레이아웃 사용’을 선택 취소하면 나에게 속임수가 있습니다.
환경 : xCode 5.0.2 스토리 보드 ios7