我想将背景图片置于我的UIView
中心。背景图像小于UIView
本身,我不想拉伸它,即我希望它具有原始尺寸。我写了以下代码
UIImage *backgroundImage=[[UIImage alloc] initWithContentsOfFile:@"analog_display_bgr.png"];
CGSize backgroundImageSize= CGSizeMake (backgroundImage.size.width,backgroundImage.size.height);
UIGraphicsBeginImageContext(backgroundImageSize);//self.frame.size
CGRect backgroundImagePosition = CGRectMake(self.bounds.origin.x+m_center.x-backgroundImage.size.width/2.0, self.bounds.origin.y+m_center.y-backgroundImage.size.height/2.0, backgroundImage.size.width, backgroundImage.size.height);
[[UIImage imageNamed:@"analog_display_bgr.png"] drawInRect:backgroundImagePosition];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.backgroundColor = [[UIColor alloc] initWithPatternImage:image];
我应该做这项工作但不起作用。
知道出了什么问题吗?提前谢谢。
答案 0 :(得分:3)
我仍然无法复制您正在谈论的拉伸效果,但我相信您的大部分问题都在于此行UIGraphicsBeginImageContext(backgroundImageSize);
。你想要的是新图像的大小,而不是它的大小。无论如何,这段代码对我有用。如果它也适合你,请告诉我。
UIImage *backgroundImage = [UIImage imageNamed:@"analog_display_bgr.png"];
UIGraphicsBeginImageContext(self.bounds.size);
CGRect imagePosition = CGRectMake((self.bounds.size.width / 2) - (backgroundImage.size.width / 2),
(self.bounds.size.height / 2) - (backgroundImage.size.height / 2),
backgroundImage.size.width,
backgroundImage.size.height);
[backgroundImage drawInRect:imagePosition];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.backgroundColor = [[UIColor alloc] initWithPatternImage:image];
答案 1 :(得分:1)
我尝试了你的代码,但我根本没有得到任何东西。完全空白视图。我所做的就是你所描述的方式是这样的:
UIImage *backgroundImage = [UIImage imageNamed:@"analog_display_bgr.png"];
UIImageView *imageView = [[UIImageView alloc]initWithImage:backgroundImage];
CGRect imageViewFrame = imageView.frame;
imageViewFrame.origin.x = (self.bounds.size.width / 2) - (imageView.bounds.size.width / 2);
imageViewFrame.origin.y = (self.bounds.size.height / 2) - (imageView.bounds.size.height / 2);
[imageView setFrame:imageViewFrame];
[self addSubview:imageView];
我在UIView子类中的- (void)awakeFromNib
中尝试过,它运行正常。在不拉伸的情况下在视图中心绘制图像。
如果我理解你的正确,你希望图像成为视图的背景,所以在其他一切背后。假设您在所有其他视图后面添加UIImageView,我上面提供的代码将执行此操作。如果您仍然希望将图像绘制为backgroundColor,就像我知道的那样,我会看看是否可以使它工作。
答案 2 :(得分:1)
很抱歉发布了另一个答案,但我无法在评论中添加图片,我想确保完全理解你想要的内容。
因此,根据我的理解,这就是您的代码所做的事情
这就是我的代码所做的:
但你想要的更像是这样:
这是对的吗?如果是的话,哪一个?左边还是右边的那个?
答案 3 :(得分:0)
您可以将UIImageView
添加到UIView
并将图片设置为UIViewContentMode
。您还可以使用UIViewContentModeCenter
属性,UIViewContentModeScaleAspectFill
或clipToBounds = YES
{{1}}来玩{/ 1}}。