2016-01-29 3 views
0

Я хотел бы создать прямоугольник в файле PDF, но я не знаю, как это сделать. Его просто создать некоторый текст или изображения, но я хотел бы добавить некоторые фигуры, такие как прямоугольники и круги.Swift PDF создает прямоугольник?

Является ли UIGraphicsBeginPDFPageWithInfo тем же, что и CGContext?

В настоящее время я использую это:

UIGraphicsBeginPDFContextToFile(pdfFileName, CGRectZero, nil); 
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil); 

// add some text 
let mainTitle = "..." 
mainTitle.drawInRect(CGRectMake(30, 110, 552, 40), withAttributes: textAttributesBoldLargeHeader) 

Но как добавить пользовательский прямоугольник?

+0

Нарисуйте свой вид и сохранить его как pdf –

+0

? и как? Я не могу создать простой UIView? Или что вы имеете в виду? – derdida

ответ

3

Просто получите контекст рисования PDF с помощью UIGraphicsGetCurrentContext() и нарисуйте что-нибудь к нему. Простой пример:

UIGraphicsBeginPDFContextToFile(pdfFileName, CGRectZero, nil); 
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil); 

let context = UIGraphicsGetCurrentContext() 

CGContextSetFillColorWithColor(context, UIColor.blueColor().CGColor) 
let rect = CGRect(x: 10, y: 10, width: 100, height: 200) 
CGContextFillRect(context, rect) 

UIGraphicsEndPDFContext() 
+0

Спасибо за ваш ответ! – derdida

+0

@derdida: Добро пожаловать! –

2

Вы также можете продлить UIView, чтобы сделать текущий контекст и сохранить данные в PDF-файл:

extension UIView { 
    var pdfData: NSData { 
     let result = NSMutableData() 
     UIGraphicsBeginPDFContextToData(result, frame, nil) 
     guard let context = UIGraphicsGetCurrentContext() else { return result } 
     UIGraphicsBeginPDFPage() 
     layer.renderInContext(context) 
     UIGraphicsEndPDFContext() 
     return result 
    } 
} 

Тестирование:

class ViewController: UIViewController { 
    let rectangle = UIBezierPath(rect: CGRectMake(30, 110, 350, 40)) 
    let shapeLayer = CAShapeLayer() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     shapeLayer.path = rectangle.CGPath 
     shapeLayer.strokeColor = UIColor.blueColor().CGColor 
     shapeLayer.fillColor = UIColor.redColor().CGColor 
     view.layer.addSublayer(shapeLayer) 
     view.pdfData.writeToURL(NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!.URLByAppendingPathComponent("view.pdf"), atomically: true) 
    } 
} 
+0

Спасибо за ваш ответ! – derdida

+0

@derdida приветствуются –

Смежные вопросы