2015-06-11 2 views
0

Я пытаюсь использовать код, приведенный ниже, чтобы установить положение и размер подвид (изображение и вид) на UICollectionViewCellпопытаться установить рамку подвид на UICollectionViewCell

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 

     //wangzheng + 
     self = [super initWithFrame:frame]; 
     if (self) { 
      NSArray *nibView = [[NSBundle mainBundle] loadNibNamed:@"IndexCityMicroCosmeticCell"owner:self options:nil]; 
      UIView *bw = [nibView objectAtIndex:0] ; 

      [self.contentView addSubview:bw]; 
      [bw setFrame:self.contentView.bounds]; 

      //wangzheng + 

      if (IS_IPHONE_6P || IS_IPHONE_6) { 

       _scaleRate=1.5; 
      } 
      else{ 
       _scaleRate=1; 
      } 

      img1.frame=CGRectMake(0, 0, 120*_scaleRate, 151*_scaleRate); 

      NSLog(@"%f %f %f %f ",img1.frame.origin.x,img1.origin.y,img1.frame.size.width,img1.frame.size.height); 
      img2.frame=CGRectMake(120*_scaleRate, 0, 200*_scaleRate, 85*_scaleRate); 
      img3.frame=CGRectMake(120*_scaleRate, 84*_scaleRate, 200*_scaleRate, 67*_scaleRate); 


      bottomView.frame=CGRectMake(0,150*_scaleRate, 320*_scaleRate, 24*_scaleRate); 
      imgAnnounce.frame=CGRectMake(0, 0, 119*_scaleRate, 24*_scaleRate); 
      anUIView.frame=CGRectMake(119*_scaleRate, 0, 201*_scaleRate, 24*_scaleRate); 


     } 
     return self; 
    } 
    return self; 
} 

enter image description here

я проверил и обнаружили, что ценность правильная, но они не перемещаются немедленно.

enter image description here

изображения подходят к UICollectionViewCell, но не следует UICollectionViewCell увеличить/изменить размер UICollectionViewCell

Ваш комментарий Добро пожаловать

+0

Где ваше расПредеЛение 'img1' .. и т.д? когда это вступает в силу после перезагрузки? вы пытались помещать код внутри '- (void) layoutSubviews'? – 0yeoj

+0

Я обновил вопрос – arachide

+0

попробуйте перевести свой код внутри '-drawRect' – 0yeoj

ответ

1

Где ваши выделения Img1 .. и т.д.? когда это вступает в силу после перезагрузки? вы пробовали разместить код внутри - (void)layoutSubviews?

если да ...

попробуйте переместить свой код в -drawRect для выполнения пользовательского рисунка/обновления щий .. и вызвать setNeedsDisplay, чтобы вызвать drawRect и перерисовывать компоненты/UI

+0

execellent, это только способ нарисовать uicollectionview на лету – arachide

0

Вы должны установить положение и размер подвидов, когда размер ячейки (cell.contentView), попробуйте использовать layoutSubviews:

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    [bw setFrame:self.contentView.bounds]; 

    //wangzheng + 

    if (IS_IPHONE_6P || IS_IPHONE_6) { 

     _scaleRate=1.5; 
    } 
    else{ 
     _scaleRate=1; 
    } 

    img1.frame=CGRectMake(0, 0, 120*_scaleRate, 151*_scaleRate); 

    NSLog(@"%f %f %f %f ",img1.frame.origin.x,img1.origin.y,img1.frame.size.width,img1.frame.size.height); 
    img2.frame=CGRectMake(120*_scaleRate, 0, 200*_scaleRate, 85*_scaleRate); 
    img3.frame=CGRectMake(120*_scaleRate, 84*_scaleRate, 200*_scaleRate, 67*_scaleRate); 

    bottomView.frame=CGRectMake(0,150*_scaleRate, 320*_scaleRate, 24*_scaleRate); 
    imgAnnounce.frame=CGRectMake(0, 0, 119*_scaleRate, 24*_scaleRate); 
    anUIView.frame=CGRectMake(119*_scaleRate, 0, 201*_scaleRate, 24*_scaleRate); 
} 

или установить autoresizingMask из подвидов (изображение и просмотреть) в initWithFrame, например, так:

img1.frame=CGRectMake(0, 0, 120*_scaleRate, 151*_scaleRate); 
img1.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
… 
img2.frame=CGRectMake(120*_scaleRate, 0, 200*_scaleRate, 85*_scaleRate); 
img2.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

img3.frame=CGRectMake(120*_scaleRate, 84*_scaleRate, 200*_scaleRate, 67*_scaleRate); 
img3.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | img2.autoresizingMask 
... 
Смежные вопросы