ios - UIImage 从图片库 iOS 中选择
问题描述
我想从图片库中选择任何图片,而不是资产中名为“mona-lisa”的图片。可能吗?
func addPainting(_ hitResult: ARHitTestResult, _ grid: Grid) {
// 1.
let planeGeometry = SCNPlane(width: 0.2, height: 0.35)
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "mona-lisa")
planeGeometry.materials = [material]
// 2.
let paintingNode = SCNNode(geometry: planeGeometry)
paintingNode.transform = SCNMatrix4(hitResult.anchor!.transform)
paintingNode.eulerAngles = SCNVector3(paintingNode.eulerAngles.x + (-Float.pi / 2), paintingNode.eulerAngles.y, paintingNode.eulerAngles.z)
paintingNode.position = SCNVector3(hitResult.worldTransform.columns.3.x, hitResult.worldTransform.columns.3.y, hitResult.worldTransform.columns.3.z)
sceneView.scene.rootNode.addChildNode(paintingNode)
grid.removeFromParentNode()
}
解决方案
如上所述,您可以使用 UIImagePickerController 从图片库中挑选图片。
这里的小例子如何使用它。
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var imageView: UIImageView!
let imagePicker = UIImagePickerController()
@IBAction func loadImageButtonTapped(sender: UIButton) {
imagePicker.allowsEditing = false
imagePicker.sourceType = .photoLibrary // The defined source type means the you take images from system gallery.
present(imagePicker, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
}
// MARK: - UIImagePickerControllerDelegate Methods
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageView.contentMode = .scaleAspectFit
imageView.image = pickedImage // Here you have the image which was picked in gallery.
}
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
}
推荐阅读
- linux - Debian Raspbian Linux 10 (Buster) - 无法安装 libudev-dev
- java - 如何扩展 AbstractExecutorService 以确保线程多样性
- vue.js - 如何让 Vite Vue app 渐进式 Web App
- c++ - 使用 std::make_*() 成语创建对象而不是构造函数以及动态分配的问题
- javascript - 使用扩展自定义/覆盖第 3 方 React 组件的部分是否安全?(忽略“组合继承”VS更改源代码?)
- javascript - 无法从 Google 表格中为 Google 网络应用程序上的 Google 图表获取正确格式的“日期时间”
- javascript - 如何在单个文件中的功能组件之间传递状态
- .htaccess - 不输入 www 时找不到 404
- python - 获取 url 变量和值到 Django 中的 urlpatterns
- mysql - MySQL JSON 与表的任意键