2012-06-15 3 views
0

Я пытаюсь понять, какие методы UIView я должен переопределить, чтобы иметь возможность отображать что-то.Реализация программно UIView над UIViewController

У меня есть очень простое приложение, которое:

  1. имеет один UIViewController

  2. Имеет UIView

  3. UIView создает закадровый изображение с размером просмотра и изображение рисуется в drawRect

Вопросы:

  1. Как создать представление? Вызов initWithRect? Или просто init? Я хочу сделать это программно, без раскадровки и ников.

  2. Какой метод UIView вызывается, когда UIViewController устанавливает границы представления? И как я могу получить эти границы (чтобы иметь возможность создавать внеэкранное изображение).

  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

Вот как я использую UIView в UIViewController и добавил UIImageView и UITextView, поскольку subview UIView в UIViewController не показал код для 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

Вы должны переопределить -(void)loadView в пользовательском классе ViewController:

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

Оттуда вы можете создать собственный UIView, который добавляет вид свойство этого ViewController.

Смежные вопросы