ios - 点击一个 UIView 到全屏,然后再次点击回到小尺寸
问题描述
我有一个包含 6 个 UIView 的视图,vPreviews
每个视图都播放实时流视频。
目标是:
- 当点击每个 UIView 之一时,它应该变成全屏。
- 再次点击,回到原点小屏布局
代码如下:
- 具有值的自定义点击手势
class FullScreenTapGesture: UITapGestureRecognizer{
var isFullScreen: Bool = false
var index: Int?
}
- 在中添加点击手势识别器
viewDidLoad()
let gesture = FullScreenTapGesture(target: self, action: #selector(fullScreenTap))
vPreviews[0].addGestureRecognizer(gesture)
gesture.index = 0
- fullScreenTap 实现
@objc func fullScreenTap(sender: FullScreenTapGesture){
if sender.isFullScreen{
print("setsmall")
setSmallScreenLayoutConstrains()
// sender.isFullScreen = false
}else{
print("setfull")
setFullScreenLayoutConstrains(index: sender.index!)
// sender.isFullScreen = true
}
// Animate to full screen
UIView.animate(withDuration: 0.8, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.vc.view.layoutIfNeeded()
}) { (finished) in
// ...
}
}
func setSmallScreenLayoutConstrains(){
vPreviews[0].pin.top().left().width(previewWidth).height(previewHeight).margin(padding,padding,0,0)
vPreviews[1].pin.top().after(of: vPreviews[0]).width(previewWidth).height(previewHeight).margin(padding,padding,0,0)
vPreviews[2].pin.top().after(of: vPreviews[1]).width(previewWidth).height(previewHeight).margin(padding,padding,0,0)
vPreviews[3].pin.below(of: vPreviews[0]).left().width(previewWidth).height(previewHeight).margin(padding,padding,0,0)
vPreviews[4].pin.below(of: vPreviews[0]).after(of: vPreviews[3]).width(previewWidth).height(previewHeight).margin(padding,padding,0,0)
vPreviews[5].pin.below(of: vPreviews[0]).after(of: vPreviews[4]).width(previewWidth).height(previewHeight).margin(padding,padding,0,0)
}
func setFullScreenLayoutConstrains(index: Int){
self.vPreviews[index].pin.top().right().left().bottom().margin(3)
}
然而,目前的结果是这样的:当检测到点击时,全屏但自动并立即回到小屏幕。
任何建议将不胜感激!
解决方案
推荐阅读
- tshark - 从包含流记录的 pcap 确定吞吐量
- python - 仅使用 Python 内置函数,是否可以仅读取一组指定的列以添加到 Python 字典中?
- ruby-on-rails - 如何知道共享关注中的当前类
- android - 如何解决加载文件时的编码错误?
- nginx - nginx入口子路径重定向
- sql-server - Bcp 实用程序 - 如何导入 10 亿条记录。数据文件到 SQL 服务器
- python - Pandas 在读取格式错误的数据时不会引发异常
- python-3.x - Python等待消息的时间限制
- ios - 如何从特定的 UICollectionViewCell 中删除 firebase 子节点 - Swift
- spring-boot - 更改我的 Spring Boot 模板的默认位置会引发 404