2012-10-22 3 views
3

사용자 지정 UIView의 가장 큰 문제점은 XIB에서 흰색 사각형이 모두 보입니다.사용자 정의 UIView 사용자가 XIB에서 해당 UIView를 사용자 정의 할 수 있도록 할 수있는 작업은 무엇입니까?

일부 속성을 사용자 정의 할 수 없습니다. 예를 들어, 사용자 정의 subView에 레이블이있는 경우 XIB에서 해당 레이블의 텍스트를 직접 설정하는 것이 좋습니다. 있는 UIButton 같은

enter image description here

뭔가 않습니다.

이것도 가능합니까?

XIB 디자인은 단지 지름길이며 실제 코드는 코드에 있습니까?

답변

3

불행히도 Interface Builder의 "Attributes Inspector"패널 (캡처 한 패널)에 항목을 추가하여 내장 된 Cocoa 클래스처럼 값을 사용자 정의 할 수있는 실제적인 방법이 없습니다.


(물론, 일부 블로그 오래된 Xcode3 플러그인으로 변환하는 몇 가지 방법을 설명 정확합니다 - Xcode3에서 그것을 다시 할 수 있었다 - Xcode4 플러그인에,하지만이 공식적으로 문서화되어 있지 않습니다 및 설치에 매우 복잡 도, 당신은 여전히 ​​하나의 가능성가) ... 그러나


, 를, 사용자 정의보기를 만들 수는 IB 팔레트를 선언, 일부 동료 코드를 작성하고 엑스 코드 플러그인에서 그것을 embbed 단지 전용 Xcode 프로젝트를 필요로 매우 편리하지 않은 경우 Interface Builder에서 XIB에있는 모든 객체의 y 속성을 코드별로 수행하는 것이 좋습니다.

단순히 "신원 경위"갈 (특성 검사기 전에 탭, Cmd를-Alt를-3)와 사용 원하는 속성의 이름/키 패스로를 채우기 위해 테이블을 "사용자 정의 런타임은 속성" 변경하고 그들의 가치를 나타냅니다.

그러나 실제로

Customize value in IB from keyPath

, 그것은 전용만큼 좋은하지 않습니다 팔레트 "경위 속성"때문에 나는 거의 그것이 내가 작업 XIB 파일에 사용되는 본 적이있다, 당신은 정확한를 입력해야 가치에 영향을 미칠 수 있도록 표의 속성 이름 : 수정할 수있는 속성 목록이 없으며 패널의 멋진 텍스트 입력란과 확인란을 사용하여 도움을받을 수 있습니다.하지만 여전히 매력처럼 작동합니다.


이 가능 할 수 있습니다 희망하는 첫 번째 아니기 때문에,이 기능을 요청 (자신의 피드백 도구를 사용하여) 애플에 요청을 보내 주시기 및 요청에 대한 마지막되지 않습니다하세요 그것 때문에 아마 애플은 충분한 요청을 받고 그것을 구현할 것입니다 ...

+0

. 그래서 linkColor를 사용자 정의 런타임 속성으로 정의했습니다. 그러면 언제 linkColor라고하는이 액세스 할 수 있습니까? 그래서 linkColor는 UIView의 속성이어야하며 [super initWithDecoder :] 이후에 사용할 수 있습니까? –

+0

맞습니다. 내 캡처에서 내 XIB에서 선택된 객체가 'UA 레이블'하위 클래스 인 'OHAttributedLabel'([사용자 정의 클래스] (http://github.com/AliSoftware/OHAttributedLabel)) 클래스 였음을 알 수 있습니다. 여기에'@property (retain) UIColor * linkColor'를 포함하여 몇 가지 속성을 추가했습니다. "User Defined Runtime Attributes"에서'linkColor' 속성 값의 값을 설정하는 것은 캡쳐에서와 같이 - 객체가 XIB에 의해 인스턴스화 될 때이 값을 설정하게합니다. 그래서'initWithCoder ' :'메소드가 호출됩니다. – AliSoftware

+0

저에게는 충분합니다. –

1

예 가능합니다. 당신의 XIB에 지금

@property(nonatomic, strong) IBOutlet UILabel myLabel; 

기본보기 사용자 정의보기의 종류 확인 :

먼저, 사용자 정의보기에 다음 특성 (당신은 ARC 기능이 작동 추측)를 추가합니다. 보기에 원하는 위치에 레이블을 추가하십시오. 사용자 정의보기를 클릭하고 연결 속성을 사용하여 레이블을 myLabel에 연결하십시오.

+0

그건 그걸하는 방법입니다. 그러나 나는 그 레이블을 원래의 레이블로하고 싶다. 덕분에 –

0

storyboard/nib는 코드가 실행되기 전에 인터페이스가 어떻게 보이는지 보여줍니다. 스토리 보드에서보고 싶다면 스토리 보드에 제작해야합니다. 사용자 정의 객체가있는 경우 스토리 보드의 기본 객체가 자리 표시 자로 사용되지만 코드에로드 된 내용은 표시되지 않습니다.

관련 문제