UIImage翻转和镜像

3

我有一个UIImage需要进行翻转和镜像。我使用UIImageView实现了这个功能,但存在两个问题:

  1. 这样做并没有改变图片,只是改变了视图。因此,当我使用该图像时,它并没有被翻转或者会出现错误。

  2. 如果我连续两次使用相同的变换,第二次就无法产生效果。

代码示例:(我刚接触iOS编程,对于任何不好的代码我感到抱歉。)

调用翻转:

// ImageHolder is a UIImageView
ImageHolder = [self flip:ImageHolder FlipType:@"V"];

它所称呼的是:

- (UIImageView *)flip:(UIImageView *) fvImageView FlipType:(NSString *)FlipType { 

    UIImageView *newView =  [[UIImageView alloc] init];
    newView = fvImageView;
    if ( FlipType == @"V"){
        newView.transform = CGAffineTransformMakeScale(-1, 1);
    } else if ( FlipType == @"H"){
        newView.transform = CGAffineTransformMakeScale(1, -1);
    }else if ( FlipType == @"VH"){
        newView.transform = CGAffineTransformMakeScale(-1, -1);   
    }else if ( FlipType == @"N"){
        newView.transform = CGAffineTransformMakeScale(1, 1);
    }
    return newView;
    [newView release]; newView= nil;
}

感谢您能提供的任何帮助!

(这段话无需翻译)

我已经更新了代码,感谢RakeshNSS!我仍然不知道为什么我不能连续两次这样做。我希望能够来回翻转。 - Kunadiso
我刚刚检查了一下,如果我保存图像,它不会翻转图像,只会翻转视图。我需要翻转图像。 - Kunadiso
使用 return [newView autorelease];,因为在返回之后进行释放将不会触发。 - Simon
1个回答

0

图像没有翻转,因为你释放了图像

[newView release];

然后将其设为nil

newView= nil;

然后返回

return newView;

经过一些操作,你返回了一个nil值。我认为只需要对作为函数参数传递的"fvImageView"对象进行更改即可。


谢谢!我应该早点看到这个。现在我已经让那部分工作了,但它仍然不允许我连续两次执行。我想要能够在不保留翻转状态的情况下来回翻转。你有什么想法吗? - Kunadiso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接