Как получить информацию CFBundleTypeIconFiles во время выполнения? - PullRequest
0 голосов
/ 28 июня 2011

У меня есть приложение, которое работает с PDF-файлом. Я добавил в файл Info.plist это:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>iconPDF</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>PDF</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.adobe.pdf</string>
        </array>
    </dict>
</array>

В моем приложении у меня есть UITableViewController, а в (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath я хочу установить cell.imageView.image со значком в CFBundleTypeIconFiles, но я не знаю, как получить этот значок.
Я пытался с docInteractionController.icons, но в этом массиве я нахожу только значок по умолчанию.

1 Ответ

0 голосов
/ 03 августа 2011

Проверьте код в HockeyKit, где я сделал именно это: https://github.com/TheRealKerni/HockeyKit/blob/develop/client/iOS/BWHockeyViewController.m

Начиная со строки 336:

NSString *iconString = nil;
    NSArray *icons = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIconFiles"];
    if (!icons) {
        iconString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIconFile"];
        if (!iconString) {
            iconString = @"Icon.png";
        }
    } else {
        BOOL useHighResIcon = NO;
        IF_IOS4_OR_GREATER(if ([UIScreen mainScreen].scale == 2.0f) useHighResIcon = YES;)

        for(NSString *icon in icons) {
            iconString = icon;
            UIImage *iconImage = [UIImage imageNamed:icon];

            if (iconImage.size.height == 57 && !useHighResIcon) {
                // found!
                break;
            }
            if (iconImage.size.height == 114 && useHighResIcon) {
                // found!
                break;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...