2012-06-16 3 views
0

Это простой вопрос, который я задаю вам: как я могу изменить фон компонента QLPreviewController?Изменение цвета фона QLPreviewController

Я использую его, чтобы представить PDF файлы, но он показывает с рисунком Scrollview как фон цвета:

[UIColor scrollViewTexturedBackgroundColor] 

Я хотел бы изменить этот цвет фона, но изменения атрибутов вида по backgroundColor не помогают.

Любые идеи?

ответ

0

Вам необходимо подклассифицировать его и внести изменения. Что-то вроде этого:

.h файл:

#import <QuickLook/QuickLook.h> 

@interface MyQLPreviewController : QLPreviewController 

.m файл:

#import "MyQLPreviewController.h" 

@implementation MyQLPreviewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor redColor]; // make the change for example 
} 
+0

Прежде, чем на самом деле спросить здесь, я попробовал все эти вещи: подклассы, измененные в загруженной, измененные в появившемся. Ничего не работает. https://skitch.com/elbryan/eb8g3/ios-simulator –

0

У меня была аналогичная проблема и в конечном итоге подклассов QLPreviewController и добавив следующие его реализации:

- (void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 

    //Find webview and set its subviews' background color to white 
    [[self.view subviews] enumerateObjectsUsingBlock:^(UIView* view, NSUInteger idx, BOOL *stop) { 

     [self setSubviewsBackgroundColor:view]; 

    }]; 
} 

и

- (void)setSubviewsBackgroundColor:(UIView*)view{ 

    [[view subviews] enumerateObjectsUsingBlock:^(UIView* subview, NSUInteger idx, BOOL *stop) { 

     if ([subview isKindOfClass:[UIWebView class]]) { 

      [subview setBackgroundColor:[UIColor whiteColor]]; 
      [[subview subviews] enumerateObjectsUsingBlock:^(UIView* view, NSUInteger idx, BOOL *stop) { 
       [view setBackgroundColor:[UIColor whiteColor]]; 
      }]; 
     } 
     else [self setSubviewsBackgroundColor:subview]; 
    }]; 
} 

Конечно, вы, скорее всего, захотите изменить [UIColor whiteColor] и оптимизировать приведенный выше код в соответствии с вашими потребностями.

+2

Это работает в iOS 5.1, но не в iOS 6. Я думаю, что они больше не используют экземпляр UIWebView. Тем не менее, даже установка цвета фона для каждого экземпляра подвью UIView не будет работать. –