为啥每次都加载新的 xib 文件?为啥不替换前一个?
Posted
技术标签:
【中文标题】为啥每次都加载新的 xib 文件?为啥不替换前一个?【英文标题】:why every time new xib file is loading?why it is not replace the previous one?为什么每次都加载新的 xib 文件?为什么不替换前一个? 【发布时间】:2017-09-07 07:22:07 【问题描述】:我的vc代码是这样的。这里的showClick函数是一个按钮点击函数。点击这个按钮我想加载一个xib文件。这是一个音乐播放器。
//
// PlayerTestOneVC.swift
// rapapediaPlayer
//
// Created by rumy hasan on 9/3/17.
// Copyright © 2017 rumyhasan. All rights reserved.
//
import UIKit
import Jukebox
var viewOne = UIView()
var viewTow = UIView()
var playerMainView: UIView?
var viewOfAll: UIView?
class PlayerTestOneVC: UIViewController
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
@IBAction func showClick(_ sender: Any)
if let keywindow = UIApplication.shared.keyWindow
if var viewtag = keywindow.viewWithTag(50)
viewtag.removeFromSuperview()
if let player = Bundle.main.loadNibNamed("Player", owner: self, options: nil)?.first as? Player
viewOne = player.viewOne
viewTow = player.viewTow
//player.bellowBtn.addTarget(self, action: #selector(change), for: .touchUpInside)
//playerMainView = player
player.ppBtnOut.isHidden = true
player.frame = keywindow.frame
playerMainView = player
viewOfAll = player
viewOfAll?.tag = 50
playerMainView = player
keywindow.addSubview(viewOfAll!)
我的 xib 文件如下所示。
点击下方视图后是这样的
没关系,可以正常工作并播放歌曲,但现在如果我再次单击显示按钮,它会在现有视图上方创建一个新视图,并且两个播放器都播放自己的音频,我可以同时听到拖车声,但我需要用新的替换第一个。我该怎么做?
我的 xib 文件下面的按钮点击代码在这里。
@IBAction func belowClick(_ sender: Any)
if dropDown
UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations:
viewOfAll?.frame = (UIApplication.shared.keyWindow?.frame)!
, completion: (completedAnimation) in
)
else
UIView.animate(withDuration: 0.5, animations:
viewOfAll?.frame = self.viewOne.frame
viewOfAll?.frame = CGRect(x: 0 , y: (UIApplication.shared.keyWindow?.frame.height)! - 70, width: (UIApplication.shared.keyWindow?.frame.width)!, height: 70)
)
dropDown = !dropDown
【问题讨论】:
【参考方案1】:我认为您的player
应该开始在其他线程中播放音频文件。每当您单击显示按钮时,您都会创建一个新的player
,而不会停止以前的player
。您只是删除了 viewtag.removeFromSuperview()
的视图,因为它会继续一起播放以前的和新的音频文件。
我认为,您可以创建一个stop
函数并在删除它的视图之前调用它。
【讨论】:
但是我这里也可以看到之前的视图,点击下方可以稍微显示一下。以上是关于为啥每次都加载新的 xib 文件?为啥不替换前一个?的主要内容,如果未能解决你的问题,请参考以下文章
我装了office2013,为啥每次打开文件时,都加载好长时间?
为啥我必须在自定义 NIB / XIB 中连接 IBOutlet 两次?