ObjecTips

Swift & Objective-C で iOS とか macOS とか

PDFView の表示設定まとめ

関連記事

koze.hatenablog.jp

※ iOS 11 beta 時点での検証です

検証コード
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    PDFView *view = [[PDFView alloc] initWithFrame:self.view.bounds];
    view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    view.autoScales = YES;
    view.displayDirection = kPDFDisplayDirectionVertical;
    view.displayMode = kPDFDisplaySinglePage;
    view.displaysRTL = NO;
    [self.view addSubview:view];
    
    NSURL *URL = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"pdf"];
    PDFDocument *document = [[PDFDocument alloc] initWithURL:URL];
    view.document = document;
}
検証結果

画像の数字は表示ページ数
白背景は初期状態で表示される部分、灰色部分はスクロール領域の部分

displaysRTL = NO

kPDFDisplayDirectionVertical kPDFDisplayDirectionHorizontal
kPDFDisplaySinglePage f:id:Koze:20170612202100p:plain f:id:Koze:20170612202100p:plain
kPDFDisplaySinglePageContinuous f:id:Koze:20170612202439p:plain f:id:Koze:20170612203519p:plain
kPDFDisplayTwoUp f:id:Koze:20170612202611p:plain f:id:Koze:20170612202611p:plain
kPDFDisplayTwoUpContinuous f:id:Koze:20170612202724p:plain f:id:Koze:20170612202724p:plain

displaysRTL = YES

kPDFDisplayDirectionVertical kPDFDisplayDirectionHorizontal
kPDFDisplaySinglePage f:id:Koze:20170612202100p:plain f:id:Koze:20170612202100p:plain
kPDFDisplaySinglePageContinuous f:id:Koze:20170612202439p:plain f:id:Koze:20170612203519p:plain
kPDFDisplayTwoUp f:id:Koze:20170612204616p:plain f:id:Koze:20170612204616p:plain
kPDFDisplayTwoUpContinuous f:id:Koze:20170612204920p:plain f:id:Koze:20170612204920p:plain

以下の2点がポイント

  • displaysRTL の設定は kPDFDisplayTwoUpkPDFDisplayTwoUpContinuous の時のみ効果有りで見開きの左右を指定するパラメータ
  • kPDFDisplayTwoUpContinuous にしていると kPDFDisplayDirectionHorizontal の設定は効果無し。見開きのまま横スクロールは出来ない。(仮に横スクロール出来たしたとしても kPDFDisplaySinglePageContinuous と見た目が変わらないため?)

という事で、ページ送り(スクロール)自体を右から左にしてくれるオプションは無いようなので日本の小説や漫画など縦書きのコンテンツを表示させる場合は Continuous モードを使わないで自前でページ移動を実装する必要がある。