在UIImageView中避免使用白色背景

时间:2014-10-07 13:57:58

标签: ios objective-c uiimageview png

我有.png图片,我的背景是白色的。我想要一个快速的解决方案,在透明背景(代码解决方案)中转换白色背景,因为app bg是灰色而不是白色。 我已经尝试过CSS(pixate),但它不起作用。

-(void)getImageFromeRequestedUrl:(NSString*)urlRequested {
NSString *userName = @"userName";
NSString *password = @"passWord";
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlRequested]];
NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", userName, password];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)];
[urlRequest setValue:authValue forHTTPHeaderField:@"Authorization"];
AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Response: %@", responseObject);
    self.image.image = responseObject;
    self.image.frame = CGRectMake(0, 0, 300, 300);
    self.image.center = self.image.superview.center;
    self.image.backgroundColor = [UIColor clearColor];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Image error: %@", error);
}];
[requestOperation start];
}

3 个答案:

答案 0 :(得分:1)

问题

你的imageView backgroundColor我认为是白色的,因为默认是白色的。此外,当您在photoViewer中打开透明的.png图像时,它们的背景看起来是白色的,但它不是那样的。如果你有一个像PhotoShop这样的工具,你可以打开它看看差异。

解决方案

要在UIImageView中处理透明png图像,您需要将imageView背景颜色设置为透明。

清晰的颜色使imageView背景透明:

UIImageView *imageView = [[UIImageView alloc] init];
imageView.backgroundColor = [UIColor clearColor];

还尝试将背景颜色更改为白色以外的其他颜色,如果白色部分改变颜色,则图像透明,配置正常。

答案 1 :(得分:1)

如果你的意思是实际的物理图像背景是白色的,那么这里是使用UIImageView的可能解决方案。但请记住,只有背景真的是白色时才会起作用(如rgb #ffffff)。此外,如果图像中的某些其他元素是白色,它也会被着色(或者在您的情况下,消失)。哦,你至少需要iOS7。

UIImage *yourImage = ...
UIImageView *yourImageView = ...
...
yourImageView.image = [yourImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
yourImageView.tintColor = [UIColor clearColor];

但如果你自己修改某些图形程序中的实际图像会好得多。

答案 2 :(得分:0)

您可能还需要将opaque属性设置为NO