Xcode的新手。我正在尝试制作动态壁纸应用程序。我的主要项目基本上都在工作,有几个不同的视图,导航控制器等等。我终于使预览/保存viewController可以工作,并且能够将MOV文件另存为实时照片。 但是现在我的问题是将多个MOV文件链接到不同的按钮,以将哪个MOV加载到预览/保存viewController中。这就是我到目前为止所拥有的。
struct FilePaths {
static let documentsPath : AnyObject = NSSearchPathForDirectoriesInDomains(.cachesDirectory,.userDomainMask,true)[0] as AnyObject
struct VidToLive {
static var livePath = FilePaths.documentsPath.appending("/")
}
}
class ViewController: UIViewController,
UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var livePhotoView: PHLivePhotoView!
{
didSet {
loadVideoWithVideoURL(Bundle.main.url(forResource: "video", withExtension: "mov")!)
}
}
因此,我已将视图设置为具有“ video.mov”特定路径的IBOutlet,是否可以设置按钮以在该视图中加载“ video2.mov”而不必重新创建所有内容?我在做这个时的第一个念头是每个人都有大量不同的viewController和自己的MOV ...(告诉我,我是新手)...但这绝对不是答案。我正在学习,:/ ...提前谢谢。
答案 0 :(得分:1)
假设您有一个视频文件名数组:
let vids = ["video", "video2", "video3"]
并假设您具有与插座集合 连接到视图控制器的相同数量的按钮:
@IBOutlet weak var videoButtons:[UIButton]!
并假定这些按钮中的每个按钮也都通过与您的视图控制器的 action 连接进行设置,以便在按下任何按钮时调用相同的方法。然后,当按下按钮时,您可以查看它是哪个 按钮,并查看它是哪个视频名称,并采取相应的行动:
@IBAction func doVideoButton(_ sender : UIButton) {
if let index = self.videoButtons.firstIndex(of:sender) {
let videoName = self.vids[index]
// now you know the name, load that video and show it!
}
}