인터페이스 빌더 (많은 레이블, 버튼 등)에 모든 컨트롤이 배치되어 있습니다. 인터페이스 빌더의 스크롤보기에이 두 가지를 모두 넣으면 더 많은 공간을 확보하고 더 많은 컨트롤을 표시하기 위해 위아래로 스크롤 할 수 있습니까? 나는 이것을 프로그램 적으로해야만 하는가?Interface Builder에 UIScrollView를 추가하는 방법은 무엇입니까?
답변
(인터페이스 작성기에서) 모든 컨트롤과 레이블 등이있는보기를 엽니 다. 모두 선택하십시오. 그런 다음 편집기 메뉴에서 포함 위치를 선택한 다음보기 스크롤을 선택하십시오.
참고 : 이전 버전의 Xcode에서는 레이아웃 메뉴에 다음 개체 삽입 ... (스크롤 뷰)입니다. 당신이 하드 코드에 contentSize의 크기를 필요가 없습니다
스크롤보기에 넣으려는 모든 개체를 선택하고 레이아웃 메뉴로 이동하여 "개체 포함"을 선택하고 "보기 스크롤"을 선택하십시오.
내 선호하는 솔루션 :
NB : 당신은 여기에 트릭을 사용하여이의 소스 코드 부분을 피할 수 있습니다 : https://stackoverflow.com/a/11239123/153422 - 아직 시도하지는 않았지만. 다음에서 레이아웃> 삽입 개체 이동, 모두 선택 :
이 트릭의 나머지 부분은 ... 당신은 아직도 IB에서 하나의 UIView (에 어쨌든
이동 모든 컨트롤을 사용해야합니다. 함께 IBOutlet 속성을 사용하여 소스 코드를 하나의 UIView이 (빌더 인터페이스 NOT, 소스 코드
아래 참조) 것을 ...>보기)
연결 시설이 (IB입니다 여기서 부러지면 UIScrollView의 원점을 잘못 설정하는 버그가 있습니다. 뷰를 중앙에 놓으려고합니다. 애플은 결코 기본적인 버그, 한숨을 확인하지 않았다) : 단일 UIView를 UIScrollView로 옮긴다. (아래 코드 참조).
사용 크기 "자동으로"올바른 크기를 설정합니다.
코드 (StackOverflow의 날 번호가 매겨진 목록 내부 코드를 삽입 못하게 한숨.)
헤더 파일 :
/** outlet that you hook up to the view created in step 1 */
@property(nonatomic, retain) IBOutlet UIView *masterView;
클래스 파일 :
/** inside your viewDidLoad method */
[scrollview addSubview: masterView]; // step 3
scrollView.contentSize = [masterView sizeThatFits:CGSizeZero]; // step 4
을 .. 내가 최근에 확인한 것은 아니지만, IIRC는 2.x 및 3.x에서 모두 작동합니다.
이 솔루션은 훌륭합니다. 게시 주셔서 감사합니다 – JoshHighland
이것은 또한 4.x에서 잘 작동합니다 - 저는 여전히 문제없이 응용 프로그램에서 사용하고 있습니다. – Adam
이것은 iPhone의 iOS 4.2에서 작동합니다. UIScrollView 높이는 ViewController의 최상위 UIView와 같거나 같아야합니다. 나는 설정을 손보고 있었고 이것을 다시 잊어 버렸다. 여전히 잘못된 위치로 튀어 오르는 것처럼 보였으므로 혼란 스러웠습니다. –
간편함 :
먼저보기에 스크롤보기를 추가하십시오. 스크롤보기의 크기를 변경하십시오 (예 : 700 픽셀로 설정). 컨트롤 넣기 하단 (보이지 않는 부분)에 컨트롤을 넣거나 편집하려면 스크롤 뷰를 선택하고 Y 시작 위치를 -300으로 변경하십시오. Voila. 편집 후 Y 시작 위치를 다시 0으로 설정하십시오.
또는 크기를 늘린 다음 다시 줄일 수 있습니다.스크롤링은 좋지만, 구현되지 않았다는 것에 놀라지는 않습니다. – Casebash
이렇게하면 스크롤 뷰의 "프레임"크기를 페이지의 뷰 크기 (뷰 포털)로 수동으로 (다시 설정해야합니다. "contentSize"를 총 콘텐츠 크기로 설정하십시오. 나중에 0,0으로 기본 설정되며 contentSize가 frame.size보다 크지 않으면 스크롤이 발생하지 않습니다. 다른 두 가지와 함께 좋은 추가 전략입니다. 감사합니다! –
이 질문은 아주 오래된이지만, 나는이 같은 문제를 가지고 있었고, 거기에 많은 도움을 찾을 수 없습니다로 내가 찾은 해결 방법을 제안합니다 :
IB, 당신은 개체를 배치 할 경우
420 픽셀을 벗어난 상태에서 모든 개체와 함께 스크롤 뷰가 포함 된보기의 상태 표시 줄, 위쪽 표시 줄 및 아래쪽 막대 모두에 대해 지정되지 않았 음을 확인하십시오. 이렇게하면보기의 화면 크기를 수동으로 조정할 수 있습니다. 그런 다음 H 값을 스크롤보기에 맞게 조정하고 다른 모든 개체에 액세스하여 함께 작업 한 다음 H 값의 변경 내용을 취소 한 다음 필요로하는 막대를 설정하는 Ximonn의 조언을 따를 수 있습니다.나는 이것을 며칠 동안 찾고 있었고 마침내 나를 위해 일한 해결책으로이 사이트를 보았습니다.
은 기본적으로 당신은 그 안에있는 UIScrollView 객체와 메인 볼 수 있습니다. 그런 다음 모든 콘텐츠가 포함 된 다른 콘텐츠보기. 그런 다음 내용보기를 스크롤보기에 추가합니다. 마지막으로 스크롤 뷰의 콘텐츠 크기를 콘텐츠보기의 크기로 설정합니다.중요한 작은 것. UIScrollView에서 큰 하위 뷰 (예 : UIImageView)를 스크롤하려면이 하위 뷰에 대해 InterfaceBuilder ->보기 창에서 "User Interaction Enabled"확인란의 선택을 취소하십시오. 또는 프로그래밍 방식으로 수행하십시오.
subview.userInteractionEnabled = NO;
그렇지 않으면이 하위보기가 효과없이 화면에 쌓입니다.
나는이 스레드가 조금 더 오래되었다는 것을 알고있다 ... 그러나 누군가는 구글에서 찾을 수있다. 내가 작업을 완수하기 위해이 작은 도우미 방법을 썼다 :
- (void)addSubview:(UIView *)theSubView toScrollView:(UIScrollView *)theScrollView
{
[theScrollView addSubview:theSubView];
theScrollView.contentSize = theSubView.bounds.size;
}
당신은 단지 헤더에이 함께 IBOutlet 년대를 선언해야합니다 (예 : contentView
및 scrollView
) 그리고 당신은 UIView
를로드 할 whereever,이 같은 메소드를 호출 당신의 소스 코드와 UIScrollView
로 :
[self addSubview:contentView toScrollView:scrollView];
나는이 방법
있는 viewDidLoad
에 전화 기능 iOS나만의 것인지 모르겠지만 여기에있는 다른 답변의 지침을 따르려고했지만 아무도 작동하지 않았습니다. 모든 답변에는 필요한 모든 것이 포함되어 있습니다. 각 부분은 우리가 뭔가를하도록 알고 있다고 가정하고 추측하는 부분입니다. 나는 마지막으로이 작업을 red artisan. 그래서 ... 내가 여기에 도착하는 데 필요한 모든 단계를 나열하고의 도움으로 그것을 알아 냈 : 인터페이스 빌더에서
보기를 추가 한 다음에 컨트롤을 추가 (또는 컨트롤이 메인 뷰에 이미있는 경우 모든 컨트롤을 선택한 다음 편집기 | 소스보기로 이동 한 다음 새 뷰를 드래그하여 주 뷰 외부에있는 모든 뷰로 드래그 할 수 있습니다. 이보기는 원하는 크기가 될 수 있습니다.
InterfaceBuilder에서 기본보기에 스크롤보기를 추가하고 전체 기본보기를 차지하도록 크기를 조정하십시오.
아래 코드를 UIViewController 헤더 및 클래스 파일에 추가하십시오.
InterfaceBuilder에서 컨트롤이 들어있는보기를 File 's Owner의 'contentView'에 연결하십시오. 파일 뷰어에서 'scrollView'로 스크롤 뷰를 연결하십시오.
헤더 파일 :
@interface MyViewController : UIViewController @property(nonatomic, retain) IBOutlet UIScrollView *scrollView; @property(nonatomic, retain) IBOutlet UIView *contentView;
클래스 파일 :
이@synthesize scrollView, contentView; - (void)viewDidLoad { [super viewDidLoad]; [self.scrollView addSubview:self.contentView]; self.scrollView.contentSize = self.contentView.bounds.size; } - (void)viewDidUnload { self.scrollView = nil; self.contentView = nil; [super viewDidUnload]; }
선택한 대답은 엑스 코드 4, 3
그러나 Xcode를 위해 잘 작동, 메뉴는 다시 한 - 약간 정렬.
편집기> 삽입에서> 스크롤보기
- 1. 하위 클래스의 UIView를 Interface Builder에 표시하려면 어떻게합니까?
- 2. Interface Builder로 내비게이션 컨트롤러를 추가하는 방법은 무엇입니까?
- 3. Interface Builder Gallery에 컨트롤을 추가하는 방법은 무엇입니까?
- 4. Interface Builder의 NSMenu에 항목을 추가하는 방법은 무엇입니까?
- 5. UIAlertView에 UIScrollView를 추가하는 방법
- 6. Apple에서 Interface Builder에 라디오 버튼을 포함하지 않은 이유는 무엇입니까?
- 7. iPhone - NSStepper 컨트롤을 Interface Builder에 어떻게 추가 할 수 있습니까?
- 8. 순환 UIScrollView를 구현하는 방법은 무엇입니까?
- 9. 프로토콜에서 선언 된 IBAction 메서드가 Interface Builder에 표시되지 않습니다.
- 10. Interface Builder를 사용하여 UIButton 또는 UIBarButtonItem에 BgImage를 추가하는 방법은 무엇입니까?
- 11. Interface Builder로 코코아에 파일 선택기/개폐기를 추가하는 방법은 무엇입니까?
- 12. imageView를 추가하는 사이에 UIScrollView를 표시하려면 어떻게해야합니까?
- 13. UIScrollView를 표시/숨기는 올바른 방법은 무엇입니까?
- 14. UIView가 포함 된 UIScrollView를 스크롤하는 방법은 무엇입니까?
- 15. 프로그래밍 방식으로 UIScrollView를 스크롤하는 방법은 무엇입니까?
- 16. NetBeans GUI Builder에 사용자 정의 패널을 포함시키는 방법은 무엇입니까?
- 17. Interface 객체를 WebMethod에 전달하는 방법은 무엇입니까?
- 18. Interface Builder에서 UITextField의 leftView를 수행하는 방법은 무엇입니까?
- 19. Interface Builder와 코드간에 상수를 공유하는 방법은 무엇입니까?
- 20. 주석에 제한을 추가하는 방법은 무엇입니까?
- 21. 일반적인 라이브러리 파일을 Flex Builder에 추가 하시겠습니까?
- 22. TableViewCell보기 모드 (Interface Builder에 표시됨)에 대한 Apple 설명서는 어디에 있습니까?
- 23. 통지에보기를 추가하는 방법은 무엇입니까?
- 24. DUPLICATION없이 추가하는 방법은 무엇입니까?
- 25. "%"기호를 추가하는 방법은 무엇입니까?
- 26. UIScrollView를 사용하여 백그라운드에서 이미지를 스크롤하지 않고 내용을 스크롤하는 방법은 무엇입니까?
- 27. UIScrollView를 포함하는 UIView의 레이아웃을 존중하게 만드는 방법은 무엇입니까?
- 28. UIScrollView를 확대 할 때 이미지의 크기가 조정되지 않는 방법은 무엇입니까?
- 29. 1000 개 이상의 하위 뷰가있는 UIScrollView를 구현하는 방법은 무엇입니까?
- 30. Interface Insanity
마크 W 그것에 나를 이길 :
는 사용 엑스 코드 4의 동일 귀하의 의견을 선택해야 할 일. – mahboudz예상대로 작동하지 않습니다. 이제는 UIScrollView 아래에 모든 것이 있지만 앱을로드하면 아무 것도 스크롤 할 수 없습니다. 왜? – erotsppa
IB에서는 스크롤 뷰가 충분히 작아 앱이 실행될 때보기에 전체 내용이 표시되도록해야합니다. 즉, 해당 경계선/프레임이 해당 뷰의 크기보다 작거나 같아야합니다. 그런 다음 앱에서 모든 버튼, 레이블 등으로보기의 scrollview.contentSize = 크기를 설정해야합니다. 이 값은 스크롤 뷰에 대해 설정 한 프레임/경계보다 큽니다. 모든 작업이 올바르게 완료되면 다른 작업없이 스크롤 할 수 있어야합니다. – mahboudz