如何在ios应用程序及其扩展中使用SVProgressHUD

时间:2017-05-02 09:23:10

标签: ios xcode podfile svprogresshud

我有一个iOS应用程序项目及其使用Alamofire和FileKit等库的共享扩展。一切都与以下Podfile

完美配合
target 'myApp' do
  use_frameworks!
  pod 'BRYXBanner'
end
target 'myAppShareExtension' do
  use_frameworks!
  pod 'FileKit', '~> 4.0.1'
  pod 'Alamofire', '~> 4.4'
end

然后,我想使用SVProgressHUD。首先,我刚刚将它添加到主应用程序,一切都很好。当我想在扩展中使用它时,问题就开始了。从那时起,我多次更改了Podfile,并且没有人允许我在应用程序和扩展程序中使用它。更糟糕的是,我甚至无法在主应用程序中再次使用它。只要我将其添加到Podfile,我的应用就无法编译。即使AlamofireFileKit也无法编译。

这是我的新Podfile,唯一一个在pod install期间不会产生任何错误的文件。

platform :ios, '10.2'
use_frameworks!
target 'myApp' do
       target 'myAppShareExtension' do
                pod 'SVProgressHUD', :git => 'https://github.com/SVProgressHUD/SVProgressHUD.git'
                pod 'Alamofire', '~> 4.0'
                pod 'FileKit', '~> 4.0.1'
       end
end

当我尝试编译时,即使没有尝试导入SVProgressHUD也不使用它,我有以下错误:

'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.

请注意,当我使用后一个Podfile时,我的扩展目标名为Pods-myApp-myAppShareExtension,而它应该是Pods-myAppShareExtension,这让我认为问题来自podfile

如果您对Podfile语法,构建环境等有任何建议,请不要犹豫。我可以提供有关

的其他信息

编辑:请注意,我尝试了不同的构建设置选项,也许我搞砸了那些东西。

1 个答案:

答案 0 :(得分:2)

在您看到错误的位置后,您将了解问题所在。

#if !defined(SV_APP_EXTENSIONS)
    UIInterfaceOrientation orientation = UIApplication.sharedApplication.statusBarOrientation;
#else
    UIInterfaceOrientation orientation = CGRectGetWidth(self.frame) > CGRectGetHeight(self.frame) ? UIInterfaceOrientationLandscapeLeft : UIInterfaceOrientationPortrait;
#endif

你看到SV_APP_EXTENSIONS了吗?这意味着如果目标不是App Extensions,它将编译上面的代码,如果是,它将编译底层代码。因此,现在,您需要它在App Extension目标中工作,您需要将预处理器宏添加到App Extension目标。

enter image description here