Bon*_*nke 34 ios uiactivityviewcontroller swift
我有UIActivityViewController4个选项:消息/邮件/ TW/FB.我想为每个选项发送不同的活动!
对于例如:在iMessage表,我需要把:String,NSURL,和UIImage.在Mail中,我需要在主题字段中放置字符串,然后在正文中放置字符串,UIImage以及NSURL.在TW/FB 我想放置图片像社交帖子做了它,也有一些字符串和NSURL.
你知道在iOS8中是否可以使用Swift吗?
我搜索了很多代码,但没有找到最适合我的代码.
hen*_*nes 50
你应该利用这个UIActivityItemSource协议.activityItems初始化程序的参数UIActivityViewController接受数据对象数组或实现UIActivityItemSource协议的对象数组.
例如,考虑以下项目来源.
class MyStringItemSource: NSObject, UIActivityItemSource {
@objc func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
return ""
}
@objc func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
if activityType == UIActivityTypeMessage {
return "String for message"
} else if activityType == UIActivityTypeMail {
return "String for mail"
} else if activityType == UIActivityTypePostToTwitter {
return "String for twitter"
} else if activityType == UIActivityTypePostToFacebook {
return "String for facebook"
}
return nil
}
func activityViewController(activityViewController: UIActivityViewController, subjectForActivityType activityType: String?) -> String {
if activityType == UIActivityTypeMessage {
return "Subject for message"
} else if activityType == UIActivityTypeMail {
return "Subject for mail"
} else if activityType == UIActivityTypePostToTwitter {
return "Subject for twitter"
} else if activityType == UIActivityTypePostToFacebook {
return "Subject for facebook"
}
return ""
}
func activityViewController(activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: String!, suggestedSize size: CGSize) -> UIImage! {
if activityType == UIActivityTypeMessage {
return UIImage(named: "thumbnail-for-message")
} else if activityType == UIActivityTypeMail {
return UIImage(named: "thumbnail-for-mail")
} else if activityType == UIActivityTypePostToTwitter {
return UIImage(named: "thumbnail-for-twitter")
} else if activityType == UIActivityTypePostToFacebook {
return UIImage(named: "thumbnail-for-facebook")
}
return UIImage(named: "some-default-thumbnail")
}
}
Run Code Online (Sandbox Code Playgroud)
上面的项源根据活动类型返回不同的字符串数据对象,主题和缩略图.要使用,您只需将其传递给UIActivityViewController初始化程序即可.
UIActivityViewController(activityItems: [MyStringItemSource()], applicationActivities: nil)
Run Code Online (Sandbox Code Playgroud)
同样,您可以定义一个自定义MyUrlItemSource类,该类根据所选活动返回不同的URL,并在初始化程序中传递它.
UIActivityViewController(activityItems: [MyStringItemSource(), MyUrlItemSource()], applicationActivities: nil)
Run Code Online (Sandbox Code Playgroud)
所有这一切都为官方文档中列出UIActivityViewController和UIActivityItemSource
小智 5
与从hennes翻译为swift 3相同的解决方案
class MyStringItemSource: NSObject, UIActivityItemSource {
public func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return ""
}
public func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? {
if activityType == UIActivityType.message {
return "String for message"
} else if activityType == UIActivityType.mail {
return "String for mail"
} else if activityType == UIActivityType.postToTwitter {
return "String for twitter"
} else if activityType == UIActivityType.postToFacebook {
return "String for facebook"
}
return nil
}
public func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivityType?) -> String {
if activityType == UIActivityType.message {
return "Subject for message"
} else if activityType == UIActivityType.mail {
return "Subject for mail"
} else if activityType == UIActivityType.postToTwitter {
return "Subject for twitter"
} else if activityType == UIActivityType.postToFacebook {
return "Subject for facebook"
}
return ""
}
public func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivityType?, suggestedSize size: CGSize) -> UIImage? {
if activityType == UIActivityType.message {
return UIImage(named: "thumbnail-for-message")
} else if activityType == UIActivityType.mail {
return UIImage(named: "thumbnail-for-mail")
} else if activityType == UIActivityType.postToTwitter {
return UIImage(named: "thumbnail-for-twitter")
} else if activityType == UIActivityType.postToFacebook {
return UIImage(named: "thumbnail-for-facebook")
}
return UIImage(named: "some-default-thumbnail")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15659 次 |
| 最近记录: |