Настройка QLPreviewController - PullRequest
       3

Настройка QLPreviewController

1 голос
/ 17 июня 2011

У меня проблема с настройкой внешнего вида моего QLPreviewController.

. Мы можем отобразить QLPreviewController, вставив его в контроллер навигации или представив его в ModalViewController.Поскольку панель моего navigationController немного настроена (tintColor), я нажимаю QLPreviewController, чтобы сохранить мою цветовую схему.Но когда я нажимаю его, у QLPreviewController появляются некоторые проблемы: мне нужно систематически вызывать [qlpvc reloadData] , чтобы мой файл отображался.

В iOS [УДАЛЕНО], даже еслиreloadData, ничего не отображается в режиме нажатия (на самом деле это отображается, но случайным образом).Поэтому я решил, что было бы интересно использовать только надежный модальный способ.

Итак, я хочу представить мой QLPreviewController в ModalViewController.Это прекрасно работает, но я не могу настроить внешний вид viewController.

Например, в didSelectRowAtIndexPath, если я делаю:

(мои источники не находятся рядом со мнойпрошу прощения, если я совершил ошибку)

QLPreviewController *qlpvc = [[QLPreviewController alloc] init];  
 qlpvc.dataSource = self; // Data Source Protocol & methods implemented of course  
 No need for delegate in my case so //qlpvc.delegate = self;  
 qlpvc.currentPreviewItemIndex = [indexPath.row];  

 // The following doesn't work :  
 [qlpvc.navigationController.navigationBar setTintColor:[UIColor redColor]];  

 // The following doesn't work too :  
 [qlpvc.modalViewController.navigationController.navigationBar setTintColor:[UIColor redColor]];    

 [self presentModalViewController:qlpvc animated:YES];  
 [qlpvc release];

tl;версия dr: Как настроить внешний вид моего модального QLPreviewController?Особенно оттенокЦвет навигационной панели?

Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 08 ноября 2012

Это работает, но я не знаю, будет ли это отклонено Apple, поскольку это не опубликованный метод и может сломаться в будущих версиях ОС. Работает в iOS6.

Добавить в метод источника данных контроллера предварительного просмотра:

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
    for (id object in controller.childViewControllers)
    {
        if ([object isKindOfClass:[UINavigationController class]])
        {
            UINavigationController *navController = object;
            navController.navigationBar.tintColor = [UIColor colorWithRed:0.107 green:0.360 blue:0.668 alpha:1.000];
        }
    }

    NSString *pathToPdfDoc = [[NSBundle mainBundle] pathForResource:@"MyPDFFile" ofType:@"pdf"];
    return [NSURL fileURLWithPath:pathToPdfDoc];
}
3 голосов
/ 07 декабря 2011

Подкласс QLPreviewController и изменение tintColor и др. В viewDidLoad:.

0 голосов
/ 10 апреля 2014

Если вы пытаетесь поддерживать простые стили, такие как tintColor, в своем приложении, вам следует рассмотреть возможность использования селекторов UIAppearance во многих классах UIView.В следующем примере настраиваются все экземпляры UINavigationBar, включая отображаемые в QLPreviewController:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

    //..

    [self initAppearance];

    return YES;

}

-(void)initAppearance{

    UINavigationBar* defaultNavigationBar = [UINavigationBar appearance];

    UIImage *backgroundImage = [UIImage imageNamed:@"MY_IMAGE.png"]

    NSDictionary *defaultNavigationBarDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                                    [UIFont fontWithName:@"Futura-Medium" size:19], NSFontAttributeName,
                                                    [UIColor blueColor], UITextAttributeTextColor,
                                                    [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.0f], UITextAttributeTextShadowColor,
                                                    [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 2.0f)], UITextAttributeTextShadowOffset,
                                                    nil];
    defaultNavigationBar.titleTextAttributes = defaultNavigationBarDictionary;  //iOS5

    //[defaultNavigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];  //iOS5
    [defaultNavigationBar setBarTintColor:[UIColor redColor]];  //iOS7

    [defaultNavigationBar setShadowImage:[[UIImage alloc] init]];  //iOS6, removes shadow
    [defaultNavigationBar setTitleVerticalPositionAdjustment:0.0f forBarMetrics:UIBarMetricsDefault];  //iOS5
    [defaultNavigationBar setBackIndicatorImage:[UIImage imageNamed:@"BACK_ARROW.png"]];  //iOS7
    [defaultNavigationBar setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"BACK_ARROW.png"]];  //iOS7

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...