【问题标题】:Generate PDF with Swift 2.0使用 Swift 2.0 生成 PDF
【发布时间】:2016-05-22 18:43:45
【问题描述】:

所以我正在尝试使用 swift 生成 PDF。我一直在尝试从 Objective C 转换为 swift,现在有一些我不知道如何修复的错误。

代码如下:

@IBAction func createPDFOnClick(sender: AnyObject!)
{
    pageSize = CGSizeMake(850,1100)
    let fileName: String = "makeME.pdf"
    var path: [AnyObject] = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,true)
    let documentDirectory: String = path[0] as! String
    let pdfPathWithFileName: String = documentDirectory.stringByAppendingString(fileName)
    self.createPDF(pdfPathWithFileName)

}

func createPDF(filePath: String){

 UIGraphicsBeginPDFContextToFile(filePath,CGRectZero,nil)
 UIGraphicsBeginPDFPageWithInfo(CGRectMake(0,0,850,1100),nil)
 self.drawBackground()
 self.drawText()
 UIGraphicsEndPDFContext()

}

func drawBackground() {
    let context: CGContextRef = UIGraphicsGetCurrentContext()!
    let rect: CGRect = CGRectMake(0,0,pageSize!.width,pageSize!.height)
    CGContextSetFillColorWithColor(context,UIColor.whiteColor().CGColor)
    CGContextFillRect(context,rect)
}

func drawText() {
    var context: CGContextRef = UIGraphicsGetCurrentContext()!
    CGContextSetFillColorWithColor(context,UIColor.blackColor().CGColor)
    var textRect: CGRect = CGRectMake(0,0,[[self myTextView]frame].size.with, self.myTextView.frame.size.height)
    var myString: String = self.myTextView.text!
    myString.drawInRect(textRect)
}

我的错误是以下几行:

var 路径:[AnyObject] = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)

我收到错误“使用未解析的标识符”

var textRect: CGRect = CGRectMake(0,0,[[self myTextView]frame].size.with, self.myTextView.frame.size.height)

这里我得到“期望分隔符”

提前致谢。

【问题讨论】:

    标签: ios swift pdf


    【解决方案1】:

    您的错误与 PDF 创建无关,与 Swift 语法有关。

    1. 指定目录的参数作为enum 导入到Swift。所以对于目录,你的输入应该是NSSearchPathDirectory,比如NSSearchPathDirectory.DocumentDirectory(或者更简洁的.DocumentDirectory)。 NSSearchPathDomainMask 是带有静态常量的 struct,因此它被视为 struct。例如,NSSearchPathDomainMask.UserDomainMask(或更简洁的 .UserDomainMask)。
    2. 您的第二个参数不是 Swift 语法。试试:

      var textRect = CGRect(0,0,self.myTextView.frame.size.width, self.myTextView.frame.size.height)

    【讨论】:

    • 在最后一行的 drawText 函数中 myString.drawInRect(textRect) 我收到错误 无法将 'CGRect' 类型的值转换为预期的参数类型 b>.
    • 预期的参数类型是什么?如果没有,请删除该行并重新输入,但让drawInRect 函数自动完成并查看参数占位符的内容。
    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2011-07-27
    相关资源
    最近更新 更多