你好我们试图将Objective-c代码转换为swift我做了但我得到了错误 这是我的代码
func imageWithView(view: UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return img!
}
@IBAction func uploadbutton(_ sender: Any)
{
let viewcontroller = newViewController()
viewcontroller.self.storyboard?.instantiateViewController(withIdentifier: "newViewController")
viewcontroller.uiimageview = self.imageWithView(view: view1)
self.present(viewcontroller, animated: true, completion: nil)
}
我在代码中遇到错误:无法将类型'UIImage'的值分配给UIImageView类型
viewcontroller.uiimageview = self.imageWithView(view: view1)
答案 0 :(得分:1)
尝试viewcontroller.uiimageview.image = self.imageWithView(view: view1)
图像视图只是一个包含图像属性的视图容器
答案 1 :(得分:0)
imageWithView(view:)
的结果是UIImage,但您将其分配给UIImageView对象。
viewcontroller.uiimageview.image = self.imageWithView(view: view1)
答案 2 :(得分:0)
我强烈建议您修改问题。听起来(从您的评论中)您希望:
UIView
并创建UIImage
UIImage
并在UIActivityViewController
你不需要做更多的事情!假设你已经有UIViewController
显示(1)您要上传的视图,包括它的子视图,以及(2)有一个按钮来显示要分享的选项。以下是如何完成这两个:
这是一个扩展视图(及其子视图)并返回UIImage
。
extension UIView {
public func createImage() -> UIImage {
UIGraphicsBeginImageContextWithOptions(
CGSize(width: self.frame.width, height: self.frame.height), true, 1)
self.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
}
现在你有一个UIImage
,只需出示一个UIActivityViewController
:
@IBAction func shareImage(_ sender: UIBarButtonItem) {
var shareImage = myView.createUIImage()
let vc = UIActivityViewController(activityItems: [shareImage], applicationActivities: [])
vc.excludedActivityTypes = [
//UIActivityTypePostToTwitter,
//UIActivityTypePostToFacebook,
UIActivityType.postToWeibo,
//UIActivityTypeMessage,
//UIActivityTypeMail,
UIActivityType.print,
//UIActivityTypeCopyToPasteboard,
UIActivityType.assignToContact,
//UIActivityTypeSaveToCameraRoll,
UIActivityType.addToReadingList,
//UIActivityTypePostToFlickr,
UIActivityType.postToVimeo,
UIActivityType.postToTencentWeibo
]
present(vc,
animated: true,
completion: nil)
vc.popoverPresentationController?.sourceView = self.view
vc.completionWithItemsHandler = {(activity, success, items, error) in
}
}
我通常会将所有排除在外的UIActivityTypes(甚至是我评论出来的那些)包含在内,以提醒我那些我所包含的内容。