UIActivityViewControllerでSafariを開くがデフォルトでない件
UIActivityViewControllerとは
アプリでよくあるこういうやつ
詳しい使い方は
[Swift]UIActivityの使い方まとめ
を見ていただければわかると思います。
ただこの機能、デフォルトで「Safariで開く」がなくすごく不便だった・・
ほとんどのキュレーションアプリでみるからデフォルトかと思ってたらみんな自分で実装してたのか。。
実装自体はすごく簡単
まずUIActivity
を継承したActivityを作成
import UIKit
public class CustomActivity: UIActivity {
// タイトル
override public var activityTitle: String? {
return "title"
}
// 画像
override public var activityImage: UIImage? {
return UIImage(name: "imageName")
}
/*
// 動作させるかどうか
// ex.URLを開けるならtrue、開けないならfalse
*/
override public func canPerform(withActivityItems activityItems: [Any]) -> Bool {
return true
}
// 動く直前にしたい動作
override public func prepare(withActivityItems activityItems: [Any]) {
}
// 選択されたときにしたい処理
override public func perform() {
self.activityDidFinish(true)
}
}
それをぶちこんで遷移するだけ
let activity = UIActivityViewController(activityItems: [""], applicationActivities: [CustomActivity()])
present(activity, animated: true, completion: nil)
ライブラリにしてみた
ただSafariで開くはめちゃめちゃ需要高そうだし苦しむ人がいるのでは。。と思いライブラリを作成してみました。
let activity = UIActivityViewController(activityItems: [""], applicationActivities: [KSSafariActivity(title: "open safari", url: URL(string: "https://hogehoge")!)])
present(activity, animated: true, completion: nil)
だけで
ActivityViewControllerにSafariで開くをい追加できます!ぜひ使ってください〜〜ヽ(・∀・)ノ
Author And Source
この問題について(UIActivityViewControllerでSafariを開くがデフォルトでない件), 我々は、より多くの情報をここで見つけました https://qiita.com/kohemon/items/528db536101bc65ba8a0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .