如何通过UIKit实现类似Photos app的图片选择器
要实现类似Photos app的图片选择器,可以通过使用UIImagePickerController类以及UICollectionView来实现。下面是一个简单的示例代码:
- 创建一个按钮,点击按钮后打开图片选择器:
import UIKit class ViewController: UIViewController, UIImagePickerControllerDelegate & UINavigationControllerDelegate { let imagePicker = UIImagePickerController() override func viewDidLoad() { super.viewDidLoad() let button = UIButton(frame: CGRect(x: 100, y: 100, width: 200, height: 50))
button.setTitle("Select Image", for: .normal)
button.addTarget(self, action: #selector(selectImage), for: .touchUpInside)
view.addSubview(button)
imagePicker.delegate = self imagePicker.allowsEditing = false imagePicker.sourceType = .photoLibrary
} @objc func selectImage() {
present(imagePicker, animated: true, completion: nil)
} func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let image = info[.originalImage] as? UIImage { //处理选中的图片 }
dismiss(animated: true, completion: nil)
} func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
}
- 创建一个UICollectionView来展示选择的图片:
class ImageCollectionViewController: UICollectionViewController { var selectedImages: [UIImage] = [] override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return selectedImages.count
} override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCell", for: indexPath) as! ImageCell cell.imageView.image = selectedImages[indexPath.row] return cell
}
} class ImageCell: UICollectionViewCell { let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) override init(frame: CGRect) { super.init(frame: frame)
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true contentView.addSubview(imageView)
}
}
通过以上代码,你可以实现一个简单的图片选择器,并用UICollectionView展示选中的图片。你可以根据需求进一步自定义UI和功能。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo6@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论