12

코드에서 내 View Controller를 배치하고 싶지만 인터페이스 빌더에 표시된 레이아웃을보고 싶습니다.IBDesignable UIViewController

나는 UIView 하위 클래스를 만들고 그 IBDesignable을 만들고 뷰 컨트롤러 뷰에 할당 할 수 있지만이 경우 뷰 컨트롤러의 속성 대신이 UIView 하위 클래스의 다른 모든 하위 뷰 속성을 만들어야합니다.

진짜 바라는 점은 내 뷰 컨트롤러를 코드로 레이아웃 할 수 있지만 프로젝트를 다시 빌드하지 않고 변경 사항을 빠르게 볼 수 있다는 것입니다. 놀이터에서 가능하다면 그 방법을 설명하는 답변을 주시면 감사하겠습니다.

의견을 보내 주셔서 감사합니다.

답변

1

IBDesignable을 사용하여보기 컨트롤러 레이아웃을 테스트 할 수있는 임시 해결책을 찾았습니다. 일반적

2.Create IBDesignable UIView 하위를하고 하위 뷰를 같이 뷰 컨트롤러의보기를 추가 것처럼 코드에서 뷰 컨트롤러 1.Layout

.

3.Create XIB하고 2

2 단계에서 정교 단계에서 만든 서브 클래스에 해당 뷰의 클래스를 설정하여 IBDesignable의 initWithFrame는 : 방법은

- (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; MyViewController *viewController = [MyViewController alloc] init]; viewController.view.frame = self.bounds; [self addSubview:viewController.view]; return self; }

처럼 보일 수 있습니다

이 initWithFrame 메소드를 넘어서는 모든 레이아웃 코드는 뷰 컨트롤러에서 처리 할 수 ​​있습니다. 하위보기의 prepareForInterfaceBuilder 메소드에서보기 컨트롤러에 데이터를 전달할 수 있습니다.

0

Xcode에서 자신의 클래스를 레이아웃하기 위해서는 먼저 빠른 놀이터에서 가져 오기가 필요합니다 : here 자세한 정보.

이렇게하면 "까다로운"부분이 있습니다. 위해서하는 것은 만들 수있는 놀이터 수준의 디버깅 및 공개 대상이 클래스는 프로토콜을 준수해야하는 방법 : CustomPlaygroundQuickLooacable :

여기 WWDC에서 간단한 예제가있다 :

이 프로토콜을 구현함으로써이 , 당신은 기본적으로 놀이터에 너를 표현하는 방법을 알려주고있다. 나는 아직 더 나은 해결책을 좋아하지 않았다.