【问题标题】:Using View from Storyboard for ImagePicker将 Storyboard 中的视图用于 ImagePicker
【发布时间】:2015-09-15 10:00:40
【问题描述】:

我正在尝试在 ImagePicker 之上创建叠加层,并发现我可以通过编程方式创建 UIView,但我更愿意使用可以在 Storyboard 中操作的 UIView。

从下面的代码截图中可以看出,我已经将 UIImagePickerControllerDelegate 分配给了我的 ViewController,创建了图像选择器,并有一个方法来分配我想要的覆盖视图。如果我尝试引用作为与故事板中存在的 UIView 相关联的插座的 UIView,它不会出现。如果如果以编程方式创建它,一切都很好。如何将它分配给我想在 Storyboard 中拖放控件的 UIView?

提前感谢您的任何建议/指导。

干杯, 卡尔

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {  
// UIView for telemetry data  
@IBOutlet weak var telemetryPanel: UIView!  

...  

override func viewDidAppear(animated:bool) {  
      ...  
      let cameraImagePicker = UIImagePickerController()  
      ...  

      // Call method to create a custom overlay for the camera  
      cameraImagePicker.cameraOverlayView = self.customViewForImagePicker(cameraImagePicker)  

 }  

func customViewForImagePicker(imagePicker: UIImagePickerController!) -> UIView {  
    // TODO: - Assigning the view to the telemetry panel does not work  
// let view:UIView = self.telemetryPanel  
// view.backgroundColor = UIColor.whiteColor()  
// view.alpha = 0.25  
// return view  

    // Creating the view programmatically overlays it  
    let cameraAspectRatio:CGFloat = 4.0 / 3.0;  
    let screenSize = UIScreen.mainScreen().bounds.size  
    let imageWidth = floorf(Float(screenSize.width) * Float(cameraAspectRatio))  
    let view: UIView = UIView(frame: CGRectMake(0, screenSize.height-65, CGFloat(imageWidth), 65))  
    view.backgroundColor = UIColor.whiteColor()  
    view.alpha = 0.25  
    return view  

}  

【问题讨论】:

  • 当您说故事板时,您是在谈论使用带有 xibs 的界面构建器吗?通过xib添加覆盖时您尝试了什么?您已经向我们展示了有效的代码,但是您的无效代码呢?
  • 感谢 Beau 的回复,不起作用的代码是在“将视图分配给遥测面板不起作用”部分中被注释掉的代码。遥测面板是放置在我的主故事板上的视图控制器中的 UIView。

标签: ios swift uiview cameraoverlayview


【解决方案1】:

初始化在界面生成器中创建的视图时,您需要使用NSBundle.mainBundle().loadNibNamed() 加载它

查看this answer 了解如何操作。

【讨论】:

  • 感谢您对此的帮助。我已经把大部分东西都准备好了,但还没有完全到位。我按照您链接的答案中的步骤操作,并更改了我的 ViewController 类中的代码(以一种我无法在此评论中整齐显示的方式)。唯一剩下的问题是 OverlayView 上的一个错误,指出“在调用中缺少参数 'coder' 的参数。我应该传递什么来满足 NSCoder 的 init 函数中的要求?
  • 你最终把这个排序了吗?
  • 不,我在另一个我想写的应用程序上分心了。不幸的是,在 Swift 中编码并不是我的日常工作,所以我只能在这里和那里获得很少的时间来处理这些应用程序。不过,感谢您的意见,希望尽快结束我正在开发的应用程序,然后希望能回到产生这个问题的应用程序。
猜你喜欢
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
相关资源
最近更新 更多