iOS: шкала UIImage для заполнения внутри UIView - PullRequest
0 голосов
/ 20 августа 2011

Я создаю подкласс UIView, получаю удаленное изображение и затем рисую его в виде, используя drawRect. Это работает нормально, но изображение затем искажается в зависимости от того, что я установил для рамки просмотра.

Я могу добавить contentMode из UIViewContentModeScaleAspectFill в мой UIView, но, похоже, он вообще не применяется к моему UIImage, который я рисую, он все еще сжимает UIImage, потому что он соответствует размеру кадра представлений.

Кажется, что я должен сделать что-то вроде следующего, но это просто увеличит изображение на 100% в моем кадре, а не следуя настройке contentMode:

[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

Нужно ли делать что-то конкретное в drawRect: чтобы мое изображение соответствовало свойству contentMode?

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

Я думаю, что самым простым решением было бы создать подкласс UIImageView вместо UIView и использовать свойство contentMode класса. Тогда вам не нужно вызывать drawRect, просто загрузите изображение в imageView.

В качестве альтернативы, если вам нужно создать подкласс UIView, добавьте UIImageView к вашему виду, настройте пружины и стойки, установите contentMode и загрузите ваше изображение.

0 голосов
/ 15 мая 2012

Вы можете использовать что-то вроде этого

    // If we have a custom background image, then draw it, othwerwise call super and draw the standard nav bar
- (void)drawRect:(CGRect)rect
{
  if (navigationBarBackgroundImage)
    [navigationBarBackgroundImage.image drawInRect:rect];
  else
    [super drawRect:rect];
}

// Save the background image and call setNeedsDisplay to force a redraw
-(void) setBackgroundWith:(UIImage*)backgroundImage
{
  self.navigationBarBackgroundImage = [[[UIImageView alloc] initWithFrame:self.frame] autorelease];
  navigationBarBackgroundImage.image = backgroundImage;
  [self setNeedsDisplay];
}
...