2012-11-01 22 views
7

UIView alt sınıflarını oluştururken, genellikle tüm başlangıç ​​ve düzen kodlarımı init yöntemine yerleştiriyorum. Ancak, düzen kodunun layoutSuviews'u geçersiz kılarak yapılması gerektiğini söylüyorum. her bir yöntem çağrıldığında açıklar, ancak bu uygulamada bunları kullanmayı bilmek istiyorum SO üzerinde post var.UIView: layoutSubviews vs initWithFrame

Şu anda bu gibi init yöntemde tüm kodumu koymak

:

MyLongView.m

- (id)initWithHorizontalPlates:(int)theNumberOfPlates 
{ 
    self = [super initWithFrame:CGRectMake(0, 0, 768, 1024)]; 

    if (self) { 
     // Initialization code 
     _numberOfPlates = theNumberOfPlates; 

     UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.frame]; 
     [scrollView setContentSize:CGSizeMake(self.bounds.size.width* _numberOfPlates, self.bounds.size.height)]; 
     [self addSubview:scrollView]; 

     for(int i = 0; i < _numberOfPlates; i++){ 
      UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"a1greatnorth_normal_%d.jpg", i+1]]; 
      UIImageView *plateImage = [[UIImageView alloc] initWithImage:img]; 
      [scrollView addSubview:plateImage]; 
      plateImage.center = CGPointMake((plateImage.bounds.size.width/2) + plateImage.bounds.size.width*i, plateImage.bounds.size.height/2); 
     } 

    } 
    return self; 
} 

Her zamanki görevler var: ayar, görünümün çerçeveyi kurma konulu bir ivar başlatılıyor UIImages’yi başlatmak, onları UIImageView’lere yerleştirmek, onları dışarıda bırakmak.

Soruma sorum: init numaralı telefondan hangileri yapılmalı ve bunlardan hangileri layoutSubviews?

cevap