UIImage imageNamed

时间:2011-05-24 22:27:08

标签: iphone

我正在尝试在OpenFlow API中将网址用作UIImage

NSString *imageUrl = [[[newsEntries objectAtIndex:0] objectForKey: @"still"] retain];
NSURL *url2 = [NSURL URLWithString:imageUrl];
NSData *photoData = [NSData dataWithContentsOfURL:url2];
UIImage *imageUI = [UIImage imageWithData:photoData]
UIImageView *myImage = [UIImageView initWithFrame:imageUI];
[(AFOpenFlowView *)self.view setImage:[UIImage imageNamed:myImage]];
[imageUr release];

[(AFOpenFlowView *)self.view setNumberOfImages:3]; 

我试过这样,但没有成功。我使用此API的唯一方法是使用imageNamed类型。 initwithData没有成功。

那么如何更改此NSString以最终成为imageNamed方法?

2 个答案:

答案 0 :(得分:2)

UIImageView与UIImage不同。

更改此行:[(AFOpenFlowView *)self.view setImage:[UIImage imageNamed:myImage]];

对此:[(AFOpenFlowView *)self.view setImage:[UIImage imageNamed:imageUI]];

它应该有用。

答案 1 :(得分:0)

这里有几个重大错误。您可能需要阅读有关C / Objective-C和类型的内容。

听起来你正在断言,特别是行

UIImage *imageUI = [UIImage imageWithData:photoData]

无效。到目前为止的代码实际上看起来没问题(尽管没有必要保留然后释放imageUrl变量。

创建UIImage后,您应该可以直接将其传递给AFOpenFlowView

[(AFOpenFlowView*)self.view setImage:imageUI forIndex:0];

该行

UIImageView *myImage = [UIImageView initWithFrame:imageUI];

有两个错误(无论如何都是不必要的)。首先,-initWithFrameCGRect作为参数,而不是UIImageUIImageView确实有一个初始化方法-initWithImage,这可能就是你想要的。但无论哪种方式,以“init”开头的方法都是实例方法,而不是类方法,所以你必须在UIImageView的实际实例上调用它们,如下所示:

UIImageView *myImage = [[UIImageView alloc] initWithImage:imageUI];

请注意,除非您自动释放或释放内存,否则会泄漏内存。

以下一行,您正确尝试向UIImage提供AFOpenFlowView,但您尝试通过将UIImage传递给UIImageView来创建+imageNamed +imageNamed }} 方法。 NSString *imageUrl = [[newsEntries objectAtIndex:0] objectForKey: @"still"]; NSString *imageName = [imageUrl lastPathComponent]; [(AFOpenFlowView *)self.view setImage:[UIImage imageNamed:imageName]]; 采用包含图像名称的NSString,并将其他任何内容传递给它将无效。

您必须始终了解方法期望接收的对象类型,并确保找到某种方法来为其提供此类内容。

你在这里寻找的东西可能是这样的:

{{1}}