eurekacommunity / imagerow Goto Github PK
View Code? Open in Web Editor NEWEureka row that allows us to take or select a picture.
License: MIT License
Eureka row that allows us to take or select a picture.
License: MIT License
Guys, I'm trying to align the image of my ImageRow in the center. Does anyone know how to do this?
Below is my code
<<< ImageRow() {
$0.sourceTypes = [.Camera, .PhotoLibrary]
$0.clearAction = .yes(style: UIAlertActionStyle.destructive)
$0.placeholderImage = #imageLiteral(resourceName: "account-image")
}.cellUpdate { cell, row in
cell.height = ({return 124})
cell.detailTextLabel?.textAlignment = .center
cell.accessoryView?.frame = CGRect(x: 0, y: 0, width: 106, height: 106)
cell.accessoryView?.layer.cornerRadius = (cell.accessoryView?.frame.height)!/2
}
Thank you
Before submitting issues ...
When submitting issues, please provide the following information to help maintainers to fix the problem faster:
Is it possible to add a new feature to enable crop and resize selected pictures ? thanks
So I am currently working on a videoRow and I am sort of stuck. i have leveraged some of the code from the image row as can be seen below.
[import Foundation
import Eureka
public struct VideoRowSourceTypes : OptionSet {
public let rawValue: Int
public var imagePickerControllerSourceTypeRawValue: Int { return self.rawValue >> 1 }
public init(rawValue: Int) { self.rawValue = rawValue }
init(_ sourceType: UIImagePickerController.SourceType) { self.init(rawValue: 1 << sourceType.rawValue) }
public static let PhotoLibrary = VideoRowSourceTypes(.photoLibrary)
public static let All: VideoRowSourceTypes = [PhotoLibrary]
}
extension VideoRowSourceTypes {
// MARK: Helpers
var localizedString: String {
switch self {
case VideoRowSourceTypes.PhotoLibrary:
return "Photo Library"
default:
return ""
}
}
}
public enum VideoClearAction {
case no
case yes(style: UIAlertAction.Style)
}
//MARK: Row
open class VideoRow<Cell: CellType>: OptionsRow<Cell>, PresenterRowType where Cell: BaseCell, Cell.Value == UIImage {
public typealias PresenterRow = ImagePickerController
/// Defines how the view controller will be presented, pushed, etc.
open var presentationMode: PresentationMode<PresenterRow>?
/// Will be called before the presentation occurs.
open var onPresentCallback: ((FormViewController, PresenterRow) -> Void)?
open var sourceTypes: VideoRowSourceTypes = []
open internal(set) var videoURL: URL?
open var clearAction = VideoClearAction.yes(style: .destructive)
private var _sourceType = UIImagePickerController.SourceType.photoLibrary
public required init(tag: String?) {
sourceTypes = .All
super.init(tag: tag)
presentationMode = .presentModally(controllerProvider: ControllerProvider.callback { return ImagePickerController() }, onDismiss: { [weak self] vc in
self?.select()
vc.dismiss(animated: true)
})
self.displayValueFor = nil
}
// copy over the existing logic from the SelectorRow
func displayImagePickerController(_ sourceType: UIImagePickerController.SourceType) {
if let presentationMode = presentationMode, !isDisabled {
if let controller = presentationMode.makeController(){
controller.row = self
controller.sourceType = sourceType
onPresentCallback?(cell.formViewController()!, controller)
presentationMode.present(controller, row: self, presentingController: cell.formViewController()!)
}
else{
_sourceType = sourceType
presentationMode.present(nil, row: self, presentingController: cell.formViewController()!)
}
}
}
/// Extends `didSelect` method
/// Selecting the Image Row cell will open a popup to choose where to source the photo from,
/// based on the `sourceTypes` configured and the available sources.
open override func customDidSelect() {
guard !isDisabled else {
super.customDidSelect()
return
}
deselect()
var availableSources: VideoRowSourceTypes = []
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
let _ = availableSources.insert(.PhotoLibrary)
}
sourceTypes.formIntersection(availableSources)
if sourceTypes.isEmpty {
super.customDidSelect()
guard let presentationMode = presentationMode else { return }
if let controller = presentationMode.makeController() {
controller.row = self
controller.title = selectorTitle ?? controller.title
onPresentCallback?(cell.formViewController()!, controller)
presentationMode.present(controller, row: self, presentingController: self.cell.formViewController()!)
} else {
presentationMode.present(nil, row: self, presentingController: self.cell.formViewController()!)
}
return
}
// Now that we know the number of sources aren't empty, let the user select the source
let sourceActionSheet = UIAlertController(title: nil, message: selectorTitle, preferredStyle: .actionSheet)
guard let tableView = cell.formViewController()?.tableView else { fatalError() }
if let popView = sourceActionSheet.popoverPresentationController {
popView.sourceView = tableView
popView.sourceRect = tableView.convert(cell.accessoryView?.frame ?? cell.contentView.frame, from: cell)
}
createOptionsForAlertController(sourceActionSheet)
if case .yes(let style) = clearAction, value != nil {
let clearPhotoOption = UIAlertAction(title: NSLocalizedString("Clear Photo", comment: ""), style: style, handler: { [weak self] _ in
self?.value = nil
self?.videoURL = nil
self?.updateCell()
})
sourceActionSheet.addAction(clearPhotoOption)
}
if sourceActionSheet.actions.count == 1 {
if let imagePickerSourceType = UIImagePickerController.SourceType(rawValue: sourceTypes.imagePickerControllerSourceTypeRawValue) {
displayImagePickerController(imagePickerSourceType)
}
} else {
let cancelOption = UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler:nil)
sourceActionSheet.addAction(cancelOption)
if let presentingViewController = cell.formViewController() {
presentingViewController.present(sourceActionSheet, animated: true)
}
}
}
}
extension VideoRow {
//MARK: Helpers
func createOptionsForAlertController(_ alertController: UIAlertController) {
createOptionForAlertController(alertController, sourceType: .PhotoLibrary)
}
func createOptionForAlertController(_ alertController: UIAlertController, sourceType: VideoRowSourceTypes) {
guard let pickerSourceType = UIImagePickerController.SourceType(rawValue: sourceType.imagePickerControllerSourceTypeRawValue), sourceTypes.contains(sourceType) else { return }
let option = UIAlertAction(title: NSLocalizedString(sourceType.localizedString, comment: ""), style: .default, handler: { [weak self] _ in
self?.displayImagePickerController(pickerSourceType)
})
alertController.addAction(option)
}
}
/// A selector row where the user can pick an image
public final class _VideoRow : VideoRow<PushSelectorCell<UIImage>>, RowType {
public required init(tag: String?) {
super.init(tag: tag)
}
}
This is my imagepickercontroller
import Foundation
import Eureka
import MobileCoreServices
/// Selector Controller used to pick an image
open class ImagePickerController : UIImagePickerController, TypedRowControllerType, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
/// The row that pushed or presented this controller
public var row: RowOf<UIImage>!
/// A closure to be called when the controller disappears.
public var onDismissCallback : ((UIViewController) -> ())?
open override func viewDidLoad() {
super.viewDidLoad()
delegate = self
mediaTypes = [kUTTypeMovie as String]
}
// open func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
// // The info dictionary may contain multiple representations of the image. You want to use the original.
// guard let selectedImage = info[.originalImage] as? UIImage else {
// fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
// }
//
//// (row as? _VideoRow)?.videoURL = info[UIImagePickerController.INF] as? URL
//
// onDismissCallback?(self)
// }
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
guard let videoURL = info[UIImagePickerControllerMediaURL] as? URL else {
return
}
(row as? _VideoRow)?.videoURL = videoURL
onDismissCallback?(self)
}
open func imagePickerControllerDidCancel(_ picker: UIImagePickerController){
onDismissCallback?(self)
}
}
Im just trying to figure out
I am trying to get the image from the image row and put it into an array. I am using the Eureka multivalued row so I can have multiple photos. I then use the form.values to put everything into a dictionary. The tag for each imageRow starts with "Image" I am trying to take the photos and put them into a photos array like this:
if key.hasPrefix("Image") {
newReport.images?.append((value)! as! UIImage)
}
I try to print out the array just to see if my images are in there and the array shows as nil. Am I supposed to do anything different to get the image from an imageRow? Am I correct to assume it should return a UIImage for each row?
I've created a customer Camera Controller that extends from UIViewController
, but I don't how to set this custom camera when I choose a .Camera
Source Type using the ImageRow
What should I do for that?
Labels: Help Required
I keep getting this error.
[!] CocoaPods could not find compatible versions for pod "ImageRow":
In Podfile:
ImageRow (~> 4.0.0)
None of your spec sources contain a spec satisfying the dependency: ImageRow (~> 4.0.0)
.
You have either:
pod repo update
or with pod install --repo-update
.Note: as of CocoaPods 1.0, pod repo update
does not happen on pod install
by default.
I am trying to import the Image row and use Eureka 3.1.0. I am getting a strange error in the below specified line:
open class _ImageRow<VCType: TypedRowControllerType, Cell: CellType>: SelectorRow<Cell, VCType>, ImageRowProtocol where VCType: UIImagePickerController, VCType.RowValue == UIImage, Cell: BaseCell, Cell: TypedCellType, Cell.Value == UIImage
Error is: ..../ImageRow/ImageRow.swift:72:71: Generic type 'SelectorRow' specialized with too many type parameters (got 2, but expected 1)
can you please help to resolve this issue?
Hi,
I have this weird problem when selecting an image from the Photo Library
[Generic] Creating an image format with an unknown type is an error
+++ Section() { section in
let header = createHeader(label: "Pictures or it didn't happend")
section.header = header
section.footer = createFooter()
}
<<< ImageRow() { row in
row.tag = "image1"
row.title = "Image 1"
row.sourceTypes = .PhotoLibrary
row.clearAction = .yes(style: UIAlertActionStyle.destructive)
row.add(rule: RuleRequired())
row.validationOptions = .validatesOnChange
}
Thanks for your help,
Sahbi
Hey,
I was wondering if there is a quick way to get the image path of the selected image.
Thanks in advance.
Hello, I am using Xcode 11.3, ImageRow 4.0, Swift 5.
I have a form with one section and inside it there is an ImageRow:
ImageRow() { row in
row.title = "Image"
row.sourceTypes = .All
row.clearAction = .yes(style: .destructive)
row.tag = "TestImage"
}.cellUpdate({ (cell, row) in
cell.accessoryType = .disclosureIndicator
})
I modify the cell's accessoryType to .disclosureIndicator for TextRow, DateRow, TimeRow successfully (I modified just to test it) but only ImageRow does not show .disclosureIndicator properly when running the app. Thank you in advance.
The latest version of ImageRow doesn't support the latest version of Eureka (5). This will require updating to Xcode 10.2 and Swift 5.
Companion pull request: #62
I wanted to check if the imageRow can be customized for the below 2 scenarios. If so, looking to understand how to customize it so that I can take advantage of the ImagePickerController that comes with it.
Profile image that is displayed in the center of a cell
Here is what I tried: I figured out how to do sub-class a Cell and Row and use a cellProvider to call a .xib file that has imageview in center, however, missing how to create a "image picker" feature.
An collection view within the imageRow that contains one cell per image added from image source (camera/photo library) and a default "+" imageview collectionview cell that when clicked presents the ImagePickerController. This is for ability to show multiple pictures added horizontally and be able to clear an added picture by tap on an existing picture
Thanks in advance
Hi,
I'm really happy with this ImageRow functionality but the app that i'm working on is used during whole day and after creating 20-30 images it is crashing. When I try to debug it in Xcode nothing is shown, only message that says "Connection is lost"
Any suggestions what could be the problem? Thanks in advance.
Best regards,
Daniel Neykov
I observed that when the value is nil, the row just looks like a regular LabelRow
, with only a text label. The user might not understand that they should tap on the row to select an image. I could just append something like "(Tap to add image)" to the title, but IMO that's not very pretty.
My suggestion is that to show a placeholder image, something like this
when value is nil.
Hi Martin, I modified the imageRow for a WebImageRow framework so that I can have two images in a Row that we can populate from the photo library. However if the form view is pushed atop the root view, then when setting the photo, the image gets corrupted and the whole view displays the selected photo! Can you please have a look to see if the issue is with the base FormViewController?
Thanks so much for your help
WebImageRow.zip
Eureka moves to 3.1.0 while ImageRow(2.0.0) still depends on 3.0 tightly.
Suggestion to revise
s.dependency 'Eureka', '> 3.0'
<<< ImageRow("profile")
$0.title = " Profile Picture"
$0.sourceTypes = [.Camera, .PhotoLibrary, .SavedPhotosAlbum]
$0.clearAction = .no
}
.onPresent({ (formVC, imagePickerVC) in
imagePickerVC.cameraDevice = .front
})
This always looks for .Camera ONLY. If user chooses PhotoLibrary OR saved album, app errors with
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Source type must be UIImagePickerControllerSourceTypeCamera'
Hi, I'm trying to upload a photo from a ImageRow but I don't know where to find the image data.
I tried searching the form.values()
but I'm not sure I can use what is there.
import Eureka
import ImageRow
class ImageUploadViewController: FormViewController {
override func viewDidLoad() {
super.viewDidLoad()
form +++ Section("PictureSection")
<<< ImageRow("PictureRow"){
$0.title = "picture"
}
}
@IBAction func upload_button(_ sender: Any) {
let values = form.values()
let image = ...
upload(image) //some fictional function
}
}
Thanks in advance.
On an iPhone localized in German, I use ImageRow with a Localizable.string file as described in README.md, containing translations for all English UI texts. The actionsheet is correctly shown in German, but when I enter camera mode, I see "PHOTO", "Cancel", "Retake", "Use Photo" in English. In photo library / saved photos, heading and section titles are German, but the "Cancel" button isn't.
This is code of my CustomPickerController
open class CustomPickerController: UIImagePickerController, TypedRowControllerType, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
/// The row that pushed or presented this controller
public var row: RowOf<UIImage>!
/// A closure to be called when the controller disappears
public var onDismissCallback : ((UIViewController) -> ())?
open override func viewDidLoad() {
super.viewDidLoad()
delegate = self
// Allow edition
allowsEditing = true
}
open func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
(row as? MyImageRow)?.imageURL = info[UIImagePickerControllerReferenceURL] as? URL
//row.value = info[UIImagePickerControllerOriginalImage] as? UIImage
row.value = info[UIImagePickerControllerEditedImage] as? UIImage
onDismissCallback?(self)
}
open func imagePickerControllerDidCancel(_ picker: UIImagePickerController){
onDismissCallback?(self)
}
}
How can I set it for my custom ImageRow?
Hey,
It could be awesome to support many languages, or giving the possibility to change the text to print.
If not, I will try to take a look this week :)
Cheers
how to push or pop a viewcontroller of Subclass 'UIViewController'?or how to custom row to push the viewcontroller?
How could I crop an image when user selects an image at ImageRow?
It would be great to select videos
I am using Eureka version 5.0.0 and ImageRow version 4.0.0 when I add this to my form
<<< ImageRow(FormItems.image) { row in
row.title = "Item Image"
row.sourceTypes = [.PhotoLibrary, .Camera]
row.clearAction = .yes(style: UIAlertAction.Style.destructive)
}
When I click on "Item Image" it doesn't present me with a menu of either photo library or using my camera it just takes me directly into my photo library? Also when I remove .PhotoLibrary from sourceTypes and just leave .Camera it doesn't work. I cannot get my camera to show up as an option. In my plist I have camera access granted as other screens in my app are already integrating with the camera just fine but not using ImageRow to do so.
Before submitting issues ...
When submitting issues, please provide the following information to help maintainers to fix the problem faster:
Hello there,
I couldn't find any source for picking images from given array or from assets catalog. Any options for that?
Does this library support multiply value of the image. Where i can select multiple image and add to it to the image view just like on the example?
Hey there are certain cases where the image selected slides all the way over to the left for some odd reason. Anybody have any idea why?
Hello,
I'm using ImageRow 4.0, Xcode 10.2.1 with Swift 5.
I have a simple controller with only one ImageRow cell.
When I tapped on the cell, the picker is showing but I have a constraint issue:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x600001ad7a70 UIView:0x7fb050c97960.width == - 16 (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x600001ad7a70 UIView:0x7fb050c97960.width == - 16 (active)>
Here the code:
form
+++ Section("sectionId")
<<< ImageRow("id") { row in
row.title = "Title"
row.sourceTypes = [.All]
row.clearAction = .yes(style: UIAlertAction.Style.destructive)
}
Hello
I'm asking this question because I got a rejection on the AppStore.
And the Apple Review Team told me to try to find some obfuscated selectors that are causing the rejection. the give me the following message.
Guideline 2.3.1 - Performance
We discovered that your app contains hidden features. Specifically, we found that this app or a framework embedded within it contain obfuscated selectors. These selectors contain names like 'SDK_v2RmqtE8QRceHjTQwD3v37oOqso61QFlOFHEk:SDK_e5L7s2FNTdu8Ttv1lRdrCWv:' and 'SDK_t0deadLdPKsU8FJPMjmJ:'. We recommend that you use the "nm" tool or the command line tools "strings" or "otool -ov" to find the entities that are causing this rejection. Additionally, you may wish to contact Apple Developer Technical Support for assistance.
Using the tools that Apple Recommend me, I see All the other Frameworks selectors in my App Except the Eureka ones.
Thanks for the help
In the ImageRowSourceTypes
strict, the members' names are still in pre-swift3 naming conventions. Camera
should be camera
, PhotoLibrary
should be photoLibrary
etc.
Hi I have a swift 3 project and I'm trying to use ImageRow but image at row does not change when I select a picture in photo library.
Besides this The error: "[Generic] Creating an image format with an unknown type is an error" is showing up. I have tryed the solution presented in issue #7 but not worked for me.
my code is:
<<< ImageRow(){ row in
row.title = "Challenge Image"
row.sourceTypes = [.PhotoLibrary, .SavedPhotosAlbum, .Camera]
row.clearAction = .yes(style: UIAlertActionStyle.destructive)
if nil != self.myobj.img {
row.value = UIImage(named: self.myobj.img!)
} else {
row.value = UIImage(named: "default-img")
}
}
Hi, I am using Eureka and ImageRow as an addition to it. The master branch is installed with cocoapods. However I have strange thing, maybe it is not strange, I add .Camera
to row.sourceTypes
but there is no option about Camera in the ActionSheet
. Any thoughts?
<<< ImageRow() { row in
row.title = "Picture"
row.sourceTypes = [.PhotoLibrary, .SavedPhotosAlbum, .Camera]
row.clearAction = .yes(style: .default)
}
How to change image row title font?
Is there planned update for supporting Eureka 3.0?
I tried to install the latest ImageRow with pod 'ImageRow', '~> 4.0'
in installation instruction and failed.
Below is the error message:
[!] CocoaPods could not find compatible versions for pod "ImageRow":
In Podfile:
ImageRow (~> 4.0)
None of your spec sources contain a spec satisfying the dependency: `ImageRow (~> 4.0)`.
You have either:
* out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
* mistyped the name or version.
* not added the source repo that hosts the Podspec to your Podfile.
Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default.
For now if anyone faces the same issue, you can use pod 'ImageRow', :git => 'https://github.com/EurekaCommunity/ImageRow.git'
, which works for me.
Is there any way to change English texts to Portuguese, since I'm developing a Brazilian App?
UIImagePickerController.InfoKey.editedImage
which is nil.Most likely - this is due to a difference in how iOS 13+ works with UIImagePickerController. We set the allowsediting flag on the image picker in viewDidLoad of the subclass, which is likely too late. We can fix it by setting this value when we init the controller instead.
presentationMode = .presentModally(controllerProvider: ControllerProvider.callback {
let controller = ImagePickerController()
controller.allowsEditing = self.allowEditor
return controller
}, onDismiss: { [weak self] vc in
self?.select()
vc.dismiss(animated: true)
})
Now, I get this error while doing pod install
[!] Unable to satisfy the following requirements:
- `Eureka (~> 4.0.0)` required by `Podfile`
- `Eureka (= 3.0)` required by `ImageRow (2.0.0)`
Image not show after selected. Confirmed already grant user photo library access.
<<< ImageRow() { row in
//row.title = "Image Row 1"
row.tag = "Image"
row.sourceTypes = .PhotoLibrary
row.clearAction = .no
}
2018-04-22 08:40:52.702612-0300 smartpei[74597:3132954] TIC Read Status [1:0x0]: 1:57
Access is granted by user
2018-04-22 08:40:58.334406-0300 smartpei[74597:3132835] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/zhangchongyu/Library/Developer/CoreSimulator/Devices/EF43E0F4-77AE-4F36-B5ED-14E7918AF488/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2018-04-22 08:40:58.335297-0300 smartpei[74597:3132835] [MC] Reading from private effective user settings.
2018-04-22 08:41:15.333641-0300 smartpei[74597:3133254] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}
After
pod 'Eureka'
pod 'ImageRow', '~> 3.0'
I got
....
Using Eureka (4.3.0)
Using ImageRow (3.1.0)
....
and image editing functionality such as cropping is not working
xcode gives abort trap 6 error as soon as i call imagerow in my form but it working fine in my other project.
*** DESERIALIZATION FAILURE (please include this section in any bug report) ***
could not deserialize type for '_': could not deserialize type for 'userPickerInfo': declaration is not a nominal type
Cross-reference to module 'UIKit'
1. While running pass #219 SILModuleTransform "MandatoryInlining".
2. While deserializing SIL vtable for 'ImageRow' in module 'ImageRow'
error: Abort trap: 6
Hi,
Thanks for great library, It seems this component doesn't respects disabled property at all. If you set the disabled to true you can still choose picture by clicking on it. It would be nice if there was a greyish kind of color too when disabled.
Thanks in advance
Hello guys,
Thanks for such a great component. But it's a little bit too complex to grasp it quickly. Can you help with custom cell class, where I can have imageView added to contentView, and not sticked to accessoryView position.
I ended up with something like this
protocol ImagePickerCellType: class {
var imagePickerView: UIImageView! { get set }
}
public class ImagePickerCell: Cell<UIImage>, CellType, ImagePickerCellType {
internal(set) var imagePickerView: UIImageView!
public override func setup() {
super.setup()
imagePickerView = UIImageView(frame: .init(x: 200, y: 0, width: 44.0, height: 44.0))
imagePickerView.contentMode = .scaleAspectFill
imagePickerView.clipsToBounds = true
contentView.addSubview(imagePickerView)
}
public override func update() {
super.update()
accessoryType = .disclosureIndicator
editingAccessoryType = accessoryType
selectionStyle = row.isDisabled ? .none : .default
}
}
Therefore I don't know how to setup Cell constraint in Row definition. I tried to add Cell: ImagePickerCellType to open class _ImageRow<Cell: CellType>: SelectorRow<Cell, ImagePickerController> where Cell: BaseCell, Cell.Value == UIImage {
, but I got Generic class cannot be declared because its generic requirement uses an internal type
.
As temporary solution I updated row as follow
open override func customUpdateCell() {
super.customUpdateCell()
cell.accessoryType = .none
guard let cell = cell as? ImagePickerCellType else { return }
if let image = self.value {
cell.imagePickerView.image = image
} else {
cell.imagePickerView.image = nil
}
}
Hello,
Just want to let you know it would be good to include in the README that NSCameraUsageDescription is necessary in Info.plist when trying to work with Camera.
For rookies like me on iOS and Swift development would be a good information :)
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.