@nativescript/imagepicker
: ~1.0.0
Imagepicker plugin supporting both single and multiple selection.
Plugin supports iOS8+ and uses QBImagePicker cocoa pod.
For Android it uses Intents to open the stock images or file pickers. For Android 6 (API 23) and above the permissions to read file storage should be explicitly required. See demo for implementation details.
In Command prompt / Terminal navigate to your application root folder and run:
tns plugin add nativescript-imagepicker
tns run
No additional configuration required!
With version 6.x.x the dependency to the nativescript-ui-listview
plugin is removed and for iOS the QBImagePicker cocoa pod is used. Now the plugin supports some new features, fixes some bugs and has a more native look in iOS. You should remove any dependencies to nativescript-pro-ui
, nativescript-ui-listview
, etc. in case you've added them in your app specifically for this plugin. Also the options fileUri, doneText, cancelText, albumsText, newestFirst and the methods cancel() and done() are no longer applicable. The image picker now returns the basic {N} ImageAsset class (and not custom asset as before). If you have been using the fileUri
property of the returned assets to get a file path in versions prior to 6.x.x, you should refer to the following issue comment for an alternative way to get the path - https://github.com/NativeScript/nativescript-imagepicker/issues/181#issuecomment-384585293.
With version 5.x.x major update to the plugin there is a related dependency which needs to be updated inside your project. The plugin uses internally the nativescript-ui-listview
plugin (part of the NativeScript Pro UI components). Recently the monolithic NativeScript Pro UI plugin was split in multiple plugins, each of them representing a single component. Now, instead of the monolithic package, nativescript-imagepicker uses only the component it needs. To use version 5.x.x of the plugin, you need to update any dependencies to nativescript-pro-ui
in your project with the single component alternatives as described in the migration guide.
With the 4.x.x major update to the plugin there is a related dependency which needs to be updated inside your project. The plugin uses internally the nativescript-pro-ui
plugin (previously known as nativescript-telerik-ui
) which has bee updated and made 100% free. This means that if your project is using the deprecated nativescript-telerik-ui
/pro
plugins adding the latest version of the nativescript-imagepicker
plugin will cause your project to throw an build error when working with iOS. This is because the nativescript-imagepicker
has a dependency to the new nativescript-pro-ui
plugin and when your project also depends on the old nativescript-telerik-ui
plugin there is a native frameworks collision.
In order to solve this you simply have to update to the latest nativescript-pro-ui
, more details on how to migrate from nativescript-telerik-ui
/pro
to nativescript-pro-ui
can be found here.
The best way to explore the usage of the plugin is to inspect both demo apps in the plugin repository.In demo
folder you can find the usage of the plugin for TypeScript non-Angular application. Refer to demo/app/main-page.ts
.In demo-angular
is the usage in an Angular app. Refer to demo-angular/app/app.component.ts
.
In addition to the plugin usage, both apps are webpack configured.
In short here are the steps:
TypeScript
import * as imagepicker from "nativescript-imagepicker";
Javascript
var imagepicker = require("nativescript-imagepicker");
Create imagepicker in single
or multiple
mode to specifiy if the imagepicker will be used for single or multiple selection of images
TypeScript
let context = imagepicker.create({
mode: "single" // use "multiple" for multiple selection
});
Javascript
var context = imagepicker.create({ mode: "single" }); // use "multiple" for multiple selection
context
.authorize()
.then(function() {
return context.present();
})
.then(function(selection) {
selection.forEach(function(selected) {
// process the selected image
});
list.items = selection;
}).catch(function (e) {
// process error
});
NOTE: To request permissions for Android 6+ (API 23+) we use nativescript-permissions.
NOTE: To be sure to have permissions add the following lines in AndroidManifest.xml
<manifest ... >
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
</manifest>
NOTE: Using the plugin on iOS requres photo library permission. Your app might be rejected from the Apple App Store if you do not provide a description about why you need this permission. The default message "Requires access to photo library." might not be enough for the App Store reviewers. You can customize it by editing the
app/App_Resources/iOS/Info.plist
file in your app and adding the following key:
<key>NSPhotoLibraryUsageDescription</key>
<string>Description text goes here</string>
Option | Platform | Default | Description |
---|---|---|---|
mode | both | multiple | The mode if the imagepicker. Possible values are single for single selection and multiple for multiple selection. |
minimumNumberOfSelection | iOS | 0 | The minumum number of selected assets. |
maximumNumberOfSelection | iOS | 0 | The maximum number of selected assets. |
showsNumberOfSelectedAssets | iOS | True | Display the number of selected assets. |
prompt | iOS | undefined | Display prompt text when selecting assets. |
numberOfColumnsInPortrait | iOS | 4 | Set the number of columns in Portrait orientation. |
numberOfColumnsInLandscape | iOS | 7 | Set the number of columns in Landscape orientation. |
mediaType | both | Any | Choose whether to pick Image/Video/Any type of assets. |
showAdvanced | Android | false | Show internal and removable storage options on Android (WARNING: not supported officially). |
The hostView parameter can be set to the view that hosts the image picker. Applicable in iOS only, intended to be used when open picker from a modal page.
We love PRs! Check out the contributing guidelines. If you want to contribute, but you are not sure where to start - look for issues labeled help wanted
.
Please, use github issues strictly for reporting bugs or requesting features. For general questions and support, check out Stack Overflow or ask our experts in NativeScript community Slack channel.
ReactNative 报错或使用AndroidStaudio打包出来的安装包不是新数据:unable to load script from assets 'index.android.bundl 解决方法: 在项目根目录下运行: react-native bundle --platform android --dev false --entry-file index.js --bundle
Hello朋友你好!我是一名西安电子科技大学在校学生,目前主要在做web方向,前端居多,别的方向也有尝试。 如果对博客内容有疑问,或者有想法,欢迎私信或评论,看到一定会回复、尽力为大家解决问题! 如果你对web感兴趣,也欢迎一起交流讨论,比如学习路线、项目经验、技术点等等。 同时我会不定期写一些学习心得呂、技术教程、项目教学等博客,希望能丰富大家的技术视野。 技术不易,我们,继续努力!
NativeScript 可以使用 Javascript,CSS, XML 创建真正的 Native 跨平台应用,支持 iOS Android,NativeScript 将您的跨平台代码翻译成目标平台的代码。 UI 使用 XML 描述,CSS 样式,在编译时将 UI 转化成本地原生代码,最终得到正在的 Native 原生应用。 Telerik 公开了用于创建安卓、iOS和Windows Unive
NativeScript Command-Line Interface The NativeScript CLI lets you create, build, and deploy NativeScript-based apps on iOS and Android devices. Get it using: npm install -g nativescript What is Native
NativeScript-Snackbar �� �� �� NativeScript plugin for Material Design SnackBar component. Installation: NativeScript 7+:tns plugin add @nstudio/nativescript-snackbar NativeScript version prior to 7:t
Nativescript-Ripple This plugin aims to bring a native (or close to native) ripple implementation on Android and iOS. The android version uses a RippleDrawable and conserves the previous background, a
NativeScript-FloatingActionButton NativeScript plugin for Material Design Floating Action Button UI component. Installation Nativescript 7+: ns plugin add @nstudio/nativescript-floatingactionbutton Na
NativeScript CardView A NativeScript plugin to provide an XML widget to implement the Material Design CardView component. Installation NativeScript 7+: ns plugin add @nstudio/nativescript-cardview Nat