展示后如何摆脱 xib?
How do i get rid of xib after presenting it?
我正在创建自己的 UIImagePicker 叠加层并使用 Xib 来显示叠加层。每当我呈现图像选择器时,它似乎呈现两次,一次是在我调用主包加载笔尖时,另一次是在我明确呈现图像选择器控制器时。我遇到的主要问题是当我关闭 imagepickercontroller 时,第一个出现,这很好,但是 xib 的底层视图仍然存在并且无论我做什么都不会消失。
我尝试将 Apple 在其网站上关于如何创建自定义 uiimagepickercontroller 的 Objective-C 示例项目转换为 Swift。我不确定我做错了什么,这是我的代码:
func showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType) {
let picker = UIImagePickerController()
picker.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
picker.sourceType = sourceType
picker.delegate = self
if sourceType == UIImagePickerControllerSourceType.Camera {
//gets rid of the out of the box imagepicker
picker.showsCameraControls = false
//loads the overlay xib for the camera
NSBundle.mainBundle().loadNibNamed("OverlayView", owner: self, options: nil)
self.overlayView.frame = (picker.cameraOverlayView?.frame)!
picker.cameraOverlayView = self.overlayView
self.overlayView = nil
//makes the image capture screen the full screen size
let screenSize: CGSize = UIScreen.mainScreen().bounds.size
let cameraAspectRatio: Float = 4.0 / 3.0
let imageWidth:Float = floorf(Float(screenSize.width) * cameraAspectRatio)
let scale: Float = ceilf((Float(screenSize.height + 120) / imageWidth) * 10.0) / 10.0
picker.cameraViewTransform = CGAffineTransformMakeScale(CGFloat(scale), CGFloat(scale))
}
self.imagePickerController = picker
self.presentViewController(self.imagePickerController, animated: true, completion: nil)
}
这是 xib 上关闭视图的按钮的代码。我怎样才能解决这个问题?因为我正在打印导航堆栈上的视图控制器数组,它只显示一个。
@IBAction func goBack(sender: AnyObject) {
self.imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}
听起来您的视图控制器的 view
插座除了 overlayView
插座之外还连接到 .xib 文件中的视图。这可能会导致您所描述的情况。
我正在创建自己的 UIImagePicker 叠加层并使用 Xib 来显示叠加层。每当我呈现图像选择器时,它似乎呈现两次,一次是在我调用主包加载笔尖时,另一次是在我明确呈现图像选择器控制器时。我遇到的主要问题是当我关闭 imagepickercontroller 时,第一个出现,这很好,但是 xib 的底层视图仍然存在并且无论我做什么都不会消失。
我尝试将 Apple 在其网站上关于如何创建自定义 uiimagepickercontroller 的 Objective-C 示例项目转换为 Swift。我不确定我做错了什么,这是我的代码:
func showImagePickerForSourceType(sourceType: UIImagePickerControllerSourceType) {
let picker = UIImagePickerController()
picker.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
picker.sourceType = sourceType
picker.delegate = self
if sourceType == UIImagePickerControllerSourceType.Camera {
//gets rid of the out of the box imagepicker
picker.showsCameraControls = false
//loads the overlay xib for the camera
NSBundle.mainBundle().loadNibNamed("OverlayView", owner: self, options: nil)
self.overlayView.frame = (picker.cameraOverlayView?.frame)!
picker.cameraOverlayView = self.overlayView
self.overlayView = nil
//makes the image capture screen the full screen size
let screenSize: CGSize = UIScreen.mainScreen().bounds.size
let cameraAspectRatio: Float = 4.0 / 3.0
let imageWidth:Float = floorf(Float(screenSize.width) * cameraAspectRatio)
let scale: Float = ceilf((Float(screenSize.height + 120) / imageWidth) * 10.0) / 10.0
picker.cameraViewTransform = CGAffineTransformMakeScale(CGFloat(scale), CGFloat(scale))
}
self.imagePickerController = picker
self.presentViewController(self.imagePickerController, animated: true, completion: nil)
}
这是 xib 上关闭视图的按钮的代码。我怎样才能解决这个问题?因为我正在打印导航堆栈上的视图控制器数组,它只显示一个。
@IBAction func goBack(sender: AnyObject) {
self.imagePickerController.dismissViewControllerAnimated(true, completion: nil)
}
听起来您的视图控制器的 view
插座除了 overlayView
插座之外还连接到 .xib 文件中的视图。这可能会导致您所描述的情况。