0

私はココアに不慣れで、IKImageBrowserViewを持っています。これが、画像をロードする方法です。

- (IBAction)loadImages:(id)sender
{
NSMutableArray *urls = [[NSMutableArray alloc]init];
int i = 1;
for (i=1; i<55; i++) {
    NSString *photoNumber = [NSString stringWithFormat:@"%i", i];
    NSMutableString *urlString = [[NSMutableString alloc] initWithString:@"Australia"];
    [urlString appendString:photoNumber];
    NSURL* url = [[NSBundle mainBundle] URLForImageResource:urlString];
    [urls addObject:url];
}
[self addImagesWithPaths:urls];
}

    - (void)addAnImageWithPath:(NSString *)path
{
    myImageObject *p;

/* add a path to our temporary array */
p = [[myImageObject alloc] init];
[p setPath:path];
[_importedImages addObject:p];
}

- (void)addImagesWithPath:(NSString *)path recursive:(BOOL)recursive
{
NSInteger i, n;
BOOL dir;

[[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&dir];

if (dir)
{
    NSArray *content = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];

    n = [content count];

    // parse the directory content
    for (i=0; i<n; i++)
    {
        if (recursive)
            [self addImagesWithPath:[path stringByAppendingPathComponent:[content objectAtIndex:i]] recursive:YES];
        else
            [self addAnImageWithPath:[path stringByAppendingPathComponent:[content objectAtIndex:i]]];
    }
}
else
{
    [self addAnImageWithPath:path];
}
}

/* performed in an independant thread, parse all paths in "paths" and add these paths in our    temporary array */
- (void)addImagesWithPaths:(NSArray *)urls
{
    NSInteger i, n;

n = [urls count];
for ( i= 0; i < n; i++)
{
    NSURL *url = [urls objectAtIndex:i];
    [self addImagesWithPath:[url path] recursive:NO];
}

/* update the datasource in the main thread */
[self performSelectorOnMainThread:@selector(updateDatasource) withObject:nil waitUntilDone:YES];
}

これで、私の画像が名前で読み込まれます-@"オーストラリア"。画像には同じ名前と番号が必要なので、これはちょっと不便です。xcodeにインポートされたフォルダから異なる名前の画像をロードするにはどうすればよいですか?

そのため、現時点では、Australia1、Australia2、Australia3、Australia4...などの名前で画像を読み込んでいます。バンドルフォルダから画像を読み込むにはどうすればよいですか?

4

1 に答える 1

1

データ ソースは、IKImageBrowserItemプロトコルに準拠するアイテムをイメージ ブラウザー ビューに返す必要があります。あなたの myImageObject クラスは、それを始めるのに適した場所です。

そのプロトコルでは、次の 3 つの方法が必要です。

まず、すべての myImageObject に既に与えられているパスを使用します。それを識別子文字列と画像表現の両方として使用できます。

このアプリで他に何をしているかによっては、後でメモリや速度の理由から、各画像を自分で読み込む方が有利であることがわかる場合があります。プロファイリング後にその結論に達した場合は、イメージを自分で NSImage または CGImage としてロードし、表現タイプを適切に変更して、イメージを表現として返すことができます。

データ ソースとして、配列内のアイテムの数を返し、 index でアイテムを要求された場合は、を介しそのアイテムを返します。_importedImagesobjectAtIndex:

より詳しい情報:

于 2013-01-15T01:56:23.693 に答える