2013-09-05 4 views
2

Почему UIImageView не вращается вокруг?Почему UIImageView не вращается?

Мне нужно отображать сегменты вокруг центральной рамки, но она не вращается.

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     _baseImage = [UIImage imageNamed:@"setAlarmSegment.png"]; 
     _segmentCircleArray = [[NSMutableArray alloc] initWithCapacity:16];  
     for (int i=0; i<16; i++) { 
      UIImageView *imageViewSegment = [[UIImageView alloc] initWithImage:_baseImage]; 
      [imageViewSegment setFrame:self.frame]; 
      imageViewSegment.transform = CGAffineTransformMakeRotation((M_PI*2/16.0f)*i); 
      [_segmentCircleArray addObject:imageViewSegment]; 
     } 
     self.backgroundColor = [UIColor colorWithWhite:0 alpha:0];  
    } 
    return self; 
} 


- (void)drawRect:(CGRect)rect 
{ 
    for (UIImageView *segment in _segmentCircleArray) { 
     [segment drawRect: rect]; 
    } 
} 

спасибо.

ответ

1

Это не то, как вы делаете рисунок в какао/какао. Вы не держите изображения, которые просматриваются не в иерархии представлений, а затем отправляют им сообщение drawRect. Представления изображений не предназначены для рисования, если они не являются частью иерархии представлений.

Вы должны добавить свои изображения в виде подсмотров вашего основного вида, а затем система позаботится о том, чтобы рисовать их для вас.

В общем, вы хотите избежать использования drawRect в Cocoa/Cocoa Touch, если это вообще возможно. В итоге получается очень медленный способ рисования.

Если вы решили использовать drawRect, вам нужно будет создать массив изображений, а не изображения. Затем вы будете рисовать каждый по очереди с помощью drawAtPoint или drawInRect. Вероятно, вам нужно будет сохранить графический контекст, а затем применить поворот к текущему контексту перед рисованием каждого изображения, а затем восстановить графический контекст.

+0

Спасибо большое! Теперь читаем ссылку. – setixela

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