无法使用swift在Facebook上发布QR码图像

时间:2015-03-04 11:23:23

标签: facebook swift uiimageview qr-code uiactivityviewcontroller

我正在创建一个QR码阅读器应用程序,一旦创建了QR码图像,用户就可以将它发布在faceBook上。这是我的代码:

import UIKit
import Social
import MobileCoreServices

class NextViewController: UIViewController {

var userTextString : String?
@IBOutlet weak var QRCodeImage: UIImageView!
var tasteImage = UIImage(named: "Back.jpg")
@IBOutlet weak var userText: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Share", style: UIBarButtonItemStyle.Bordered, target: self, action: "ShareIt")
    self.userText.text = self.userTextString
    var qrText = self.userTextString
    CGSize(width: 300, height: 300)
    self.QRCodeImage.image = {
        var qrCode = QRCode("\(qrText)")!
        qrCode.size = self.QRCodeImage.bounds.size
        return qrCode.image
        }()
}

func ShareIt(){

            var activityIteams : [AnyObject]?

            if QRCodeImage.image != nil{
                activityIteams = [userText.text as String!, self.QRCodeImage.image as UIImage!]
            }else{
                activityIteams = [userText.text as String!]
            }
            println(activityIteams)
            let activityController = UIActivityViewController(activityItems: activityIteams!, applicationActivities: nil)
            self.presentViewController(activityController, animated: true, completion: nil)
     }
}

但是我不能在Facebook上用这个代码发布任何内容,如果我尝试仅发布文本然后它可以工作但是图像不起作用我在控制台中得到了这个:

2015-03-04 16:45:18.128 testing[11389:160922] plugin com.apple.share.Facebook.post interrupted

如果我尝试另一张已经存储到项目中的图片,我可以在Facebook上轻松发布但我不知道我的QR码图像有什么问题。

以下是我的示例项目以获取更多信息。

https://github.com/DharmeshKheni/QR-Code

1 个答案:

答案 0 :(得分:1)

我得到了这样的解决方案:

首先,我将图像保存到文档目录,然后从该目录中检索该图像,这对我来说工作正常,这是我的更新代码。

import UIKit
import Social
import MobileCoreServices

class QRImage: UIViewController {

var userTextString : String?
@IBOutlet weak var QRCodeImage: UIImageView!
@IBOutlet weak var userText: UILabel!
var imageView = UIImageView()
override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Share", style: UIBarButtonItemStyle.Bordered, target: self, action: "ShareIt")
    self.userText.text = self.userTextString
    var qrText = self.userTextString
    CGSize(width: 300, height: 300)

    self.QRCodeImage.image = {
        var qrCode = QRCode("\(qrText)")!
        qrCode.size = self.QRCodeImage.bounds.size

        return qrCode.image
        }()
    self.createThumBil()
}

func ShareIt(){

    var activityIteams : [AnyObject]?

        if QRCodeImage.image != nil{
            activityIteams = [userText.text as String!, self.imageView.image as UIImage!]
        }else{
            activityIteams = [userText.text as String!]
        }
        println(activityIteams)
        let activityController = UIActivityViewController(activityItems: activityIteams!, applicationActivities: nil)
        self.presentViewController(activityController, animated: true, completion: nil)
}

func getImage(){

    var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
    let getImagePath = paths.stringByAppendingPathComponent("QRCode.png")
    self.imageView.image = UIImage(contentsOfFile: getImagePath)
}

func createThumBil(){

    let originalImage : UIImage = self.QRCodeImage.image!
    let destinationSize : CGSize = CGSizeMake(200, 200)
    UIGraphicsBeginImageContext(destinationSize)
    originalImage.drawInRect(CGRectMake(0, 0, destinationSize.width, destinationSize.height))
    let newImage : UIImage = UIGraphicsGetImageFromCurrentImageContext()
    let thumbNailimageData : NSData = UIImagePNGRepresentation(newImage)
    UIGraphicsEndImageContext()
    if let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) {
        if paths.count > 0 {
            if let dirPath = paths[0] as? String {
                println(dirPath)
                thumbNailimageData.writeToFile(dirPath.stringByAppendingPathComponent("QRCode.png"), atomically: true)
            }
        }
    }
    self.getImage()
    }
}