2

最新の XCode/Swift 2/iOS 9 に更新してから、UIPrintInteractionController を使用しようとすると警告が表示され続けます。

これらの警告は、「印刷シミュレーター」を開いたときにのみ発生します。私はそれが私のアプリだと思ったので、非常に単純なコードを実行する単一の UIButton を備えた新しい単一ビュー アプリを作成しましたが、それでも警告が生成されます。電話とiPadの両方のシミュレーターで発生します

助けてください。それは私を夢中にさせています、ありがとうございます

@IBAction func Clicked(sender: AnyObject) {

    let printController = UIPrintInteractionController.sharedPrintController()

    let printInfo = UIPrintInfo(dictionary:nil)
    printInfo.outputType = UIPrintInfoOutputType.General
    printInfo.jobName = "print Job"
    printController.printInfo = printInfo

    let formatter = UIMarkupTextPrintFormatter(markupText: "<b>Hello World</b>")
    formatter.contentInsets = UIEdgeInsets(top: 72, left: 72, bottom: 72, right: 72)
    printController.printFormatter = formatter

    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        printController.presentAnimated(false, completionHandler: nil)
    }else{
        printController.presentFromRect(view.frame, inView: view, animated: false, completionHandler: nil)
    }
}

警告は次のとおりです。

2015-09-29 18:58:19.748 MyApp[1608:527574] Unbalanced calls to begin/end appearance transitions for <UIViewController: 0x13d5c6170>.
2015-09-29 18:58:20.013 MyApp[1608:527574] the behavior of the UICollectionViewFlowLayout is not defined because:
2015-09-29 18:58:20.014 MyApp[1608:527574] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2015-09-29 18:58:20.015 MyApp[1608:527574] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x13d6a1e10>, and it is attached to <UICollectionView: 0x13e063c00; frame = (0 0; 320 250); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x13d5e7ef0>; layer = <CALayer: 0x13d507850>; contentOffset: {0, 0}; contentSize: {0, 0}> collection view layout: <UICollectionViewFlowLayout: 0x13d6a1e10>.
2015-09-29 18:58:20.015 MyApp[1608:527574] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
2015-09-29 18:58:20.026 MyApp[1608:527574] the behavior of the UICollectionViewFlowLayout is not defined because:
2015-09-29 18:58:20.026 MyApp[1608:527574] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2015-09-29 18:58:20.027 MyApp[1608:527574] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x13d6a1e10>, and it is attached to <UICollectionView: 0x13e063c00; frame = (0 0; 320 250); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x13d5e7ef0>; layer = <CALayer: 0x13d507850>; contentOffset: {0, 0}; contentSize: {320, 250}> collection view layout: <UICollectionViewFlowLayout: 0x13d6a1e10>.
2015-09-29 18:58:20.027 MyApp[1608:527574] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
2015-09-29 18:58:21.735 MyApp[1608:527574] the behavior of the UICollectionViewFlowLayout is not defined because:
2015-09-29 18:58:21.735 MyApp[1608:527574] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2015-09-29 18:58:21.736 MyApp[1608:527574] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x13d6ba990>, and it is attached to <UICollectionView: 0x13e02c400; frame = (0 0; 320 250); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x13d6809a0>; layer = <CALayer: 0x13d6aa750>; contentOffset: {0, 0}; contentSize: {0, 0}> collection view layout: <UICollectionViewFlowLayout: 0x13d6ba990>.
2015-09-29 18:58:21.736 MyApp[1608:527574] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
2015-09-29 18:58:21.758 MyApp[1608:527574] the behavior of the UICollectionViewFlowLayout is not defined because:
2015-09-29 18:58:21.759 MyApp[1608:527574] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2015-09-29 18:58:21.759 MyApp[1608:527574] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x13d6ba990>, and it is attached to <UICollectionView: 0x13e02c400; frame = (0 0; 320 250); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x13d6809a0>; layer = <CALayer: 0x13d6aa750>; contentOffset: {0, 0}; contentSize: {320, 250}> collection view layout: <UICollectionViewFlowLayout: 0x13d6ba990>.
2015-09-29 18:58:21.759 MyApp[1608:527574] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
4

3 に答える 3

1

デリゲートメソッドを使用して解決された同じ問題がありましたprintInteractionControllerParentViewController(printInteractionController:)(Balookaに感謝します!)

そう:

  1. クラスヘッダーで:

    UIPrintInteractionControllerDelegate
    
  2. どこか:

    let printController = UIPrintInteractionController.sharedPrintController()
    
    printController.delegate = self
    
  3. デリゲート関数を実装します。

    func printInteractionControllerParentViewController(printInteractionController: UIPrintInteractionController) -> UIViewController {
        return self
    }
    
于 2016-09-14T10:17:40.253 に答える
-1

質問に記載されている警告は、アイテムのサイズがUICollectionView間違っている場合に出力されます。メッセージに記載されているように、高さはプラス セクションとコンテンツ インセットUICollectionViewCellの合計より高くすることはできません。UICollectionView

同じ警告に遭遇し、それを探していたので、あなたの質問にたどり着きました。私の場合、コードは次のようになりました。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        let height = self.collectionView.frame.height
        let width = height * 0.75
        return CGSizeMake(width, height)
    }

let height = self.collectionView.frame.heightが私に警告を引き起こしていました。インセットをゼロに変更したことさえありましたがlet height = self.collectionView.frame.height * 0.75、警告を使用して高さを短くするまでは消えませんでした。

コードに UICollectionView 関連の情報が表示されず、インセットが印刷コントローラー用であるため、これが関連しているかどうかはわかりません。あなたは正しい場所を見ていますか?

于 2015-11-13T02:34:12.327 に答える