2012-06-15 3 views
0

뭔가를 표시 할 수 있도록 UIView 어떤 메서드를 재정의해야하는지 이해하려고합니다. 프로그래밍 방식으로 UIViewController 통해 UIView

나는 매우 간단한 응용 프로그램이 있습니다

  1. 가 하나의 UIViewController

  2. 을 가지고 있음 UIView의

  3. 의 UIView는보기의 크기와와 오프 스크린 이미지를 생성 이미지는 drawRect로 그려집니다.

질문 :

  1. 보기를 어떻게 작성해야합니까? initWithRect를 호출 하시겠습니까? 아니면 그냥 init? 나는 그것을 프로그램 적으로하고 싶다. 스토리 보드 나 펜촉은 없다.

  2. UIViewController가 뷰 경계를 설정할 때 호출되는 UIView의 방법은 무엇입니까? 그리고 어떻게 이러한 범위를 얻을 수 있습니까 (오프 스크린 이미지를 만들 수 있습니다).

  3. 누군가 UIImageView의 소스를 어디서 찾을 수 있습니까?

참고 : 나는 이것을 성공하지 못한 채로 4 일 동안 해왔습니다. 기본적으로

+0

이미지가 기존 리소스입니까, 아니면 프로그래밍 방식으로 CoreGraphics 호출로 이미지를 만들고 있습니까? UIImageView의 인스턴스를 뷰의 하위 뷰로 사용했는지 살펴 보았습니다. 여기서 imageView.frame = mainView.bounds? –

+0

데이터로 채워진 비트 맵을 사용하여 그것을 만들고 UIImage로 변형하여 화면에 그립니다. –

답변

3

1) initWithFrame:

1.), 경계가 설정 될 때 자동으로라고있는 방법이 없습니다. UIView의 하위 클래스를 원할 경우 setBounds 메서드를 재정의 할 수 있습니다.

2.) UIImageView?의 소스. 헤더 클래스는 CoreFoundation.framework에서 사용할 수 있습니다.

+0

안녕하세요. 답변 해 주셔서 감사합니다. initWithCGImage를 호출 할 때 뷰 경계를 지정하지 않아도됩니다. 프레임 범위가 이미지 범위로 설정되어 있습니까? UIViewController를 사용하는 아이디어는 컨트롤러가 뷰 범위를 정의하도록하는 것이 었습니다. –

0

그래서 UIViewController에서 UIView를 사용하고 UIViewController에서 UIView의 하위보기로 UIImageView 및 UITextView를 추가하면 UITextview에 대한 코드가 표시되지 않으므로 질문에 대해 묻지 않습니다.

- (void)viewDidLoad 
{ 
    UIView *baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    [self.view addSubview:baseView]; 
    [baseView release]; 

    // Displays UIImageView 
    UIImageView* ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 5, 300, 235)]; 
    self.view.backgroundColor = [UIColor brownColor]; 

    // load all the frames of our animation 
    ImageView.animationImages = [NSArray arrayWithObjects:  
            [UIImage imageNamed:@"1a.png"], 
            [UIImage imageNamed:@"1b.png"], 
            nil]; 

    // all frames will execute in 25 seconds 
    ImageView.animationDuration = 25; 

    // start animating 
    [ImageView startAnimating]; 
    ImageView.layer.borderWidth = 2; 
    ImageView.layer.borderColor = [[UIColor whiteColor]CGColor]; 
    [ImageView.layer setMasksToBounds:YES]; 
    [ImageView.layer setCornerRadius:15.0f]; 

    [baseView addSubview:ImageView]; 
} 

희망 하시겠습니까?

0

당신은 사용자 정의의 ViewController 클래스에 -(void)loadView를 재정의해야합니다

UIView *baseView = [[UIView alloc] init]; 
self.view = baseView; 
[super loadView]; 

가 거기에서 당신이의 ViewController의보기 속성을 추가 지정에 UIView를 만들 수 있습니다.

관련 문제