2016-05-12 4 views
-1

Я новичок в Objective-C. Когда я использую addSubview в методе setupView для просмотра изображения, это не работает.addSubview не работает

 
    h. 


    @interface CollectionViewController : UICollectionViewController 

    @end 

    @interface MyCell : UICollectionViewCell 

    @end 

и

 
    m. 


    @interface MyCell() 

    @end 

    @implementation MyCell 

    - (instancetype)initWithFrame:(CGRect)frame { 
      self = [super initWithFrame:frame]; 
     if (self) [self setupView]; 
      return self; 

     } 

    - (id)initWithCoder:(NSCoder *)aDecoder 
    { 
     self = [super initWithCoder:aDecoder]; 
     if (self) [self setupView]; 
     return self; 
    } 

    -(UIImageView *)myImageView { 

     UIImageView *imageView = [UIImageView new]; 
     imageView.image = [UIImage imageNamed:@"photo.jpg"]; 
     imageView.contentMode = UIViewContentModeScaleAspectFill; 
     imageView.layer.masksToBounds = true; 
     return imageView; 

    } 

    -(void)setupView { 

     self.backgroundColor = [UIColor whiteColor]; 

     [self addSubview:self.myImageView]; 

    } 

    @end 

enter image description here

+0

вам нужно указать ограничения или рамки для изображения. в настоящее время это {0,0} размер поэтому не видно – Shubhank

ответ

1

Есть много потенциальных проблем, но, скорее всего, рама ImageView не является правильным. Попробуйте создать его с помощью

UIImage *image = [UIImage imageNamed:@"photo.jpg"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
+0

Спасибо, теперь он работает) Но почему вот так UIImageView * imageView = [UIImageView new]; imageView.image = [UIImage imageNamed: @ "photo.jpg"]; не работает? –

+0

Поскольку '[UIImageView new]' создает изображение с рамкой нулевого размера. Настройка изображения не изменяет размер кадра. Кроме того, вы могли бы добавить '[imageView sizeToFit]' после установки изображения, и он тоже сработает. – EricS

+0

действительно, этот вариант тоже. Спасибо за объяснение –

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