我希望我的几个视图控制器底部有一个播放器。该播放器包含2个视图:播放器和切换它的按钮(可以隐藏或扩展)。
现在我在每个视图控制器中使用以下代码添加此播放器。
@IBOutlet weak var broadcastView: BroadcastView!
@IBOutlet weak var broadcastViewBottomConstraint: NSLayoutConstraint!
@IBOutlet weak var avatarImageView: UIImageView!
@IBAction func toggleBroadcastMode(_ sender: ToggleBroadcastButton) {
if sender.isExpanded {
broadcastViewBottomConstraint.hideBroadcastView()
} else {
broadcastViewBottomConstraint.expandBroadcastView()
}
animateBroadcastToggle()
sender.toggle()
broadcastView.toggleBroadcastView()
}
有没有办法不反复复制代码?也许我可以创建父VC或View来做到这一点?如果是这样,那怎么样?
答案 0 :(得分:1)
我个人会将UINavigationController子类化并将其放在那里,这样你就可以在玩家保持良好的底部时浏览流程,如果你需要一个VC与之交互,那么你可以
if let nav = navigationController as? MyPlayerNavController {
nav.PlayThis()
}
你可以让它改变大小,从那里你可以在转换过程中失去它,在播放音乐时就像音乐应用程序一样。
答案 1 :(得分:0)
将其添加为keyWindow的子视图。这样它将始终保留在所有viewControllers中。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var overlayViewFrame = UIScreen.main.bounds
overlayViewFrame.origin.y = overlayViewFrame.height - 200
overlayViewFrame.size.height = 200
let overlayView = UIView(frame:overlayViewFrame)
overlayView.backgroundColor = UIColor.cyan
UIApplication.shared.keyWindow?.addSubview(overlayView)
}
此代码是示例通用代码。如果您希望某些VC不显示此信息,请将此叠加视图保留为单例,并隐藏在适当的VC中。