0

我正在继承 UIView,检索远程图像,然后使用 drawRect 将其绘制到视图中。这很好用,但是图像会根据我为视图框架设置的内容而倾斜。

我可以将 UIViewContentModeScaleAspectFill 的 contentMode 添加到我的 UIView 中,但它似乎根本不适用于我正在绘制的 UIImage,它仍然会挤压 UIImage,因为它遵循视图帧大小。

似乎我应该执行以下操作,但这只是在我的框架内将图像缩放 100%,而不是遵循 contentMode 设置:

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

我是否需要在 drawRect: 中做一些特定的事情来使我的图像遵循 contentMode 属性?

4

2 回答 2

2

我认为最简单的解决方案是继承 UIImageView 而不是 UIView 并使用类的 contentMode 属性。然后就不需要调用drawRect了,把图片加载到imageView中就可以了。

或者,如果你需要继承 UIView,添加一个 UIImageView 到你的视图,设置 springs 和 struts,设置 contentMode,并加载你的图像。

于 2011-08-19T20:18:38.737 回答
0

你可以使用这样的东西

    // 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];
}
于 2012-05-15T12:20:19.977 回答