是否可以在 iPad 屏幕上显示 UIView 而无需将其添加到任何其他视图?
当我点击并保持点击屏幕上的任意位置时,视图应该出现在点击位置上,一旦我抬起手指,视图应该消失......
注意:点击手势被添加到视图保持全屏
5 回答
除非它是其他视图的子视图,否则您无法显示视图。这就是 iOS 系统的工作方式——它是视图的层次结构。如果你愿意,你可以将你的视图添加到 UIWindow,这是你的应用程序的最顶层视图。
我认为这是在屏幕上显示浮动 UIView 的最简单方法。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var remoteVideoView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let gesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.handleGesture(_:)))
remoteVideoView.addGestureRecognizer(gesture)
remoteVideoView.isUserInteractionEnabled = true
}
@objc func handleGesture(_ gesture: UIPanGestureRecognizer) {
// handling code
let translation = gesture.translation(in: self.view)
let remoteVideoView = gesture.view!
remoteVideoView.center = CGPoint(x: remoteVideoView.center.x + translation.x, y: remoteVideoView.center.y + translation.y )
gesture.setTranslation(CGPoint.zero, in: self.view)
}
}
在不添加任何子视图的情况下显示浮动 UIView显然是不可能的。IOS系统就是这样设计的。每个应用程序都有一个Window 和一个根 viewController。其他所有内容都添加到此viewController中。要实现浮动 UIView之类的功能,您必须将其作为子视图添加到主视图控制器中,以便在不需要时显示和删除它。您的主视图将是覆盖整个设备屏幕的根viewController 的视图。我假设您知道如何在视图中添加和删除子视图。
默认情况下添加 UIView 并且它应该被隐藏,当用户触摸任何位置时,只需根据您的手指位置设置您的 UIView 位置。当触摸被移除时,只需隐藏那个 UIView。
希望这会帮助你。
一切顺利 !!!
你必须将你的观点添加到某些东西上。没有其他办法了。
制作一个透明的视图来容纳您的浮动视图。使用 0.0 的 alpha 向其添加浮动视图。
然后在透明视图上实现 touchesBegan:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touches began");
myFloatingView.alpha = 1.0;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touches began");
myFloatingView.alpha = 0.0;
}
当然,您需要对 alpha 进行一点动画处理,以获得非常流畅的效果。