lea*_*rco 9 ios swift share-extension
我正在创建一个共享扩展程序,以允许将Youtube视频共享到我的应用中,并且很难顺利呈现自定义UI。我想代替默认的仅包含原始Youtube URL的视图控制器,而是要做类似于Facebook扩展的视觉效果,显示缩略图和视频标题。我的第一个尝试是编辑MainInterface故事板ShareViewController,但这样做简短地显示了我的自定义界面,然后默认UI布局将其“覆盖”。所以我最终将另一个带有UI的视图控制器添加到情节提要中,并在ShareViewController中添加了
override func presentationAnimationDidFinish() {
super.presentationAnimationDidFinish()
DispatchQueue.main.async {
self.pushConfigurationViewController(customVC)
}
Run Code Online (Sandbox Code Playgroud)
显然,这样做的问题在于,在推送自定义控件之前,我仍然可以看到默认的View Controller。因此,问题将是启动共享扩展名后如何立即显示我的自定义UI?我已经在.plist中尝试了NSExtensionPrincipalClass,但是没有任何积极的结果
提前致谢
tor*_*tte 10
这些常规步骤无需使用即可为我工作SLComposeServiceViewController(这是实现时的提交代码)。最后的图像显示了我们的结果,但是第6步可以是任何内容,而不仅仅是表格。
步骤:
(代码)更改ShareViewController为简单UIViewController
(代码)为添加模糊效果ShareViewController
(情节提要)将容器视图添加到ShareViewController
(情节提要)添加导航控制器
(情节提要)在ShareViewController容器视图中嵌入导航控制器
在导航控制器中自定义视图控制器(例如,请参见此SO线程)
ShareViewController为简单UIViewControllerimport UIKit
class ShareViewController: UIViewController {
// ^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
ShareViewController // ShareViewController continued from Step 1.
override func viewDidLoad() {
super.viewDidLoad()
// /sf/ask/1192916861/
// only apply the blur if the user hasn't disabled transparency effects
if UIAccessibilityIsReduceTransparencyEnabled() == false {
view.backgroundColor = .clear
let blurEffect = UIBlurEffect(style: .dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
//always fill the view
blurEffectView.frame = self.view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.insertSubview(blurEffectView, at: 0)
} else {
view.backgroundColor = .black
}
// Do any additional setup after loading the view.
}
Run Code Online (Sandbox Code Playgroud)
ShareViewController将一个Container View从对象库拖到ShareViewController情节提要上的,然后调整尺寸。例如:
将导航控制器从“对象库”拖到情节提要。
ShareViewController的容器视图中嵌入导航控制器按住Control键从容器视图拖动ShareViewController到导航控制器,然后从菜单中选择“ 嵌入 ”。应该看起来像这样:
我的结果:
好吧,进一步挖掘和搜索我发现我必须让我的ShareViewController成为UIViewController的子类,而不是 ** SLComposeServiceViewController**。当我在故事板上设计我的界面时,我保留了 .plist 原样,但必须考虑到这里描述的 VC 全屏问题:iOS 8 Share Extension custom view controller size
我在那里接受了@Dale 的回答来解决它。
| 归档时间: |
|
| 查看次数: |
4852 次 |
| 最近记录: |