이 접근 방식은 많은 사용자 정의보기가있는 응용 프로그램, 중첩 된 PNG 그래픽 및 사용자 상호 작용에 따라 변경 될 수있는 애니메이션의 경우 좋은 방법으로 보이는지 궁금합니다. I는 UIView의상속을위한 UIView 및 UIViewController 연습
@interface BaseView : UIView {
@protected
BaseViewController *controller;
}
@property (retain) BaseViewController *controller;
@end
및 I는 "drawArea"는 CGRect가 사용되는 뷰
@interface BaseViewController : UIViewController {
@protected
CGRect drawArea;
}
- (void) drawArea:(CGRect) _drawArea;
- (CGRect) drawArea;
- (void) linkSubviewController: (BaseViewController *) _subviewController;
@end
를 조작하기위한 코드를 걸었 기본 위치는 해당 컨트롤러 클래스를 확장하는 BaseView 클래스를 생성 프레임으로보기로 전달하십시오. 다음과 같이
"linkSubviewController은"둥지에 컨트롤러와 뷰를 사용하면 다음을 수행 할 수 있습니다 나는 "이미지 뷰"하고있는 UIImage과를 BaseView을 확장뿐만 아니라 저장 "ImageViewController"라는 다른 사용자 지정 쌍을 계층화 또한
- (void) linkSubviewController: (BaseViewController *) _subviewController {
[self.view addSubview:[_subviewController view]];
}
X, Y는, 뷰에서 "의 drawRect"연신 방법에서 H
, 승 I는 예를 들어, self.controller의 바르 어느 VARS 변경되었는지 확인하거나 이미지를 할당 확인할 수
UIImage *image = [(ImageViewController *)self.controller image];
CGContextDrawImage(...) etc
,
나는 기본은 "initWithFrame"루틴은 그래서 각 것을 지정하지 않고 투명 배경을 가진 다양한 이미지를로드 할 수 있습니다
self.backgroundColor = [UIColor clearColor];
self.opaque = NO;
이 포함이
- (void)loadView {
ImageView *v = [[ImageView new] initWithFrame:drawArea];
v.controller = self;
self.view = v;
}
같은에는 loadView 메소드 뭔가의 대부분을 쓰기 시각.
내 응용 프로그램에서이 코드를 사용할 수 있었으며 사용자 지정 항목의 레이아웃을 어셈블하는 최상위 클래스를 쉽게 작성할 수 있습니다. 애니메이션의 경우 컨트롤러에 넣고 self.view.layer를 조작했습니다.
은 기본적으로 내가 의견을 찾고 있어요, 내가 목표 - C와 아이폰 SDK에 새로운 오전
[[Class alloc] init]보다 [Class new]를 사용해야하는 특별한 이유가 있습니까? 명백한 확장 된 initWith 및 기타 등등. – Sneakyness
@ Snookyness + new는 천천히 죽어가는 관습입니다. + alloc은 + new + *가 + alloc-init을 호출해야하기 때문에 + alloc-init에 비해 유연성이 떨어지는 반면, + alloc을 사용하면 원하는 모든 -init 또는 -initWith ... 메소드를 사용할 수 있습니다. –
감사합니다. + 새로운 것은 분명한 실수입니다. 감사합니다. 나는 위임 접근법을 시도 할 것이다. 나의 주요 목표는 콘트롤러에 상태 정보를 유지하고 콘트롤러의 변경에 따라 뷰를 다시 그리게하고, 콘트롤 클래스를 실행할 수있는 앱 클래스이다. 또한 계획의 일부는 사용자 정의보기에서 캐스팅 된 .controller까지 터치 이벤트를 보낼 수 있어야했습니다. 분명히 약간의 재 작업이 필요하지만 대표단이 도움이된다고 생각합니다. – Michael