зеркало из https://github.com/xamarin/ios-samples.git
remove hashtags ios11 ios12
This commit is contained in:
Родитель
748e927fad
Коммит
39b1d41dec
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - ARKitAudio
|
||||
description: "This sample runs an ARKit world tracking session with content displayed in a SceneKit view. To demonstrate plane detection... #ios11"
|
||||
description: "This sample runs an ARKit world tracking session with content displayed in a SceneKit view. To demonstrate plane detection... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-arkitaudio
|
||||
---
|
||||
# ARKitAudio
|
||||
|
@ -30,7 +33,3 @@ This sample is runnable on iPhone/iPad devices since it requires a real camera.
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - ARKit Sample "Placing Objects"
|
||||
description: "This sample is an ARKit augmented reality demo: you can place objects on detected surfaces. To test this sample you'll need to deploy it #ios11"
|
||||
description: "This sample is an ARKit augmented reality demo: you can place objects on detected surfaces. To test this sample you'll need to deploy it (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-arkitplacingobjects
|
||||
---
|
||||
# ARKit Sample "Placing Objects"
|
||||
|
@ -16,11 +19,6 @@ To test this sample you'll need to deploy it on a device running iOS 11 software
|
|||
|
||||
![Demo showing placed objects and menu](Screenshots/arkit-sml.png)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Larry O'Brien, Kevin Mullins
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - ARKit Sample
|
||||
description: "This sample is a simple ARKit augmented reality demo. To test this sample you'll need to deploy it on a device running iOS 11 beta software #ios11"
|
||||
description: "This sample is a simple ARKit augmented reality demo. To test this sample you'll need to deploy it on a device running iOS 11 beta software (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-arkitsample
|
||||
---
|
||||
# ARKit Sample
|
||||
|
@ -21,7 +24,3 @@ By default, the sample presents a jet in a fixed location. To animate the jet ar
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins, Larry O'Brien
|
||||
|
|
|
@ -1,26 +1,30 @@
|
|||
---
|
||||
name: Xamarin.iOS - AVCam
|
||||
description: "Using AVFoundation to Capture Images and Movies, this sample demonstrates how to use the AVFoundation capture API to record movies... #ios11"
|
||||
description: "Using AVFoundation to Capture Images and Movies, this sample demonstrates how to use the AVFoundation capture API to record movies... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-avcam
|
||||
---
|
||||
# AVCam
|
||||
|
||||
### Using AVFoundation to Capture Images and Movies
|
||||
## Using AVFoundation to Capture Images and Movies
|
||||
|
||||
AVCam demonstrates how to use the `AVFoundation` capture API to record movies and capture still images. The sample has a record button for recording movies, a camera button for switching between front and back cameras (on supported devices), and a still button for capturing still images. AVCam runs only on an actual device, either an `iPad` or `iPhone`, and cannot be run in `Simulator`.
|
||||
|
||||
### Build Requirements
|
||||
|
||||
Xcode 9.0, iOS 11.0 SDK
|
||||
|
||||
### Runtime
|
||||
|
||||
iOS 11.0 or later
|
||||
|
||||
### Author
|
||||
Xamarin port changes are released under the MIT license
|
||||
## License
|
||||
|
||||
Ported to Xamarin.iOS by Rustam Zaitov, Bill Holmes
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - AVCamBarcode
|
||||
description: "Demonstrates how to use the AVFoundation capture API to detect barcodes and faces. Machine Readable Codes QR code PDF-417 Data Matrix... #ios11"
|
||||
description: "Demonstrates how to use the AVFoundation capture API to detect barcodes and faces. Machine Readable Codes QR code PDF-417 Data Matrix... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-avcambarcode
|
||||
---
|
||||
# AVCamBarcode
|
||||
|
@ -14,13 +17,15 @@ This sample demonstrates how to use the AVFoundation capture API to detect barco
|
|||
|
||||
## Machine Readable Codes
|
||||
|
||||
* QR code
|
||||
- QR code
|
||||
|
||||
![qr_code](https://github.com/xamarin/ios-samples/raw/master/ios11/AVCamBarcode/Resources/code1.png)
|
||||
* PDF-417
|
||||
|
||||
- PDF-417
|
||||
|
||||
![pdf417](https://github.com/xamarin/ios-samples/raw/master/ios11/AVCamBarcode/Resources/code2.gif)
|
||||
* Data Matrix
|
||||
|
||||
- Data Matrix
|
||||
|
||||
![datamatrix](https://github.com/xamarin/ios-samples/raw/master/ios11/AVCamBarcode/Resources/code3.png)
|
||||
|
||||
|
@ -31,7 +36,3 @@ Xcode 9.0 or later; iOS 11.0 SDK or later
|
|||
## Target
|
||||
|
||||
This sample runnable on iPhone/iPad devices since it requires a real camera.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko, Rustam Zaitov
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - CoreML with Azure Custom Vision Service
|
||||
description: "This sample CustomVision is a demo of the new iOS 11 Vision framework and CoreML, using a model trained with Azure's Custom Vision Service #ios11"
|
||||
description: "This sample CustomVision is a demo of the new iOS 11 Vision framework and CoreML, using a model trained with Azure's Custom Vision Service (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-coremlazuremodel
|
||||
---
|
||||
# CoreML with Azure Custom Vision Service
|
||||
|
@ -21,11 +24,6 @@ The custom model has been trained to recognize differet varieties of fruit:
|
|||
|
||||
![Screenshot of fruit recognizer working](Screenshots/banana-sml.png)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Larry O'Brien, Craig Dunn
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - CoreML Image Recognition
|
||||
description: "Demo of iOS 11 CoreML using different image recognition models to identify features in photographs. The smaller, simpler... #ios11"
|
||||
description: "Demo of iOS 11 CoreML using different image recognition models to identify features in photographs. The smaller, simpler... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-coremlimagerecognition
|
||||
---
|
||||
# CoreML Image Recognition
|
||||
|
@ -23,7 +26,3 @@ Tap the model name in the lower-left of the screen to switch between models whil
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins, Larry O'Brien
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - CoreML and Vision Example
|
||||
description: "Demo of the new iOS 11 Vision framework and CoreML. It detects a handwritten number inside a box; use the sample photos in the... #ios11"
|
||||
description: "Demo of the new iOS 11 Vision framework and CoreML. It detects a handwritten number inside a box; use the sample photos in the... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-coremlvision
|
||||
---
|
||||
# CoreML and Vision Example
|
||||
|
@ -19,7 +22,3 @@ It detects a handwritten number inside a box; use the sample photos in the **Tes
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Drag and Drop CollectionView Example
|
||||
description: "Demo of the new iOS 11 Drag and Drop feature using UICollectionView & UITableView. Test this app on an iPad - the drag and drop... #ios11"
|
||||
description: "Demo of the new iOS 11 Drag and Drop feature using UICollectionView & UITableView. Test this app on an iPad - the drag and drop... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-draganddropcollectionview
|
||||
---
|
||||
# Drag and Drop CollectionView Example
|
||||
|
@ -23,11 +26,6 @@ Test this app on an iPad - the drag and drop functionality does not work on iPho
|
|||
|
||||
![drag and drop example screenshot](Screenshots/01-sml.png)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Craig Dunn
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Drag and Drop Custom View Example
|
||||
description: "Demo of the new iOS 11 Drag and Drop feature in a custom view Test this app on an iPad - the drag and drop functionality does not... #ios11"
|
||||
description: "Demo of the new iOS 11 Drag and Drop feature in a custom view Test this app on an iPad - the drag and drop functionality does not... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-draganddropcustomview
|
||||
---
|
||||
# Drag and Drop Custom View Example
|
||||
|
@ -19,7 +22,3 @@ Test this app on an iPad - the drag and drop functionality does not work on iPho
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Vincent Dondain
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Drag and Drop Example
|
||||
description: "Demo of the new iOS 11 Drag and Drop. Test this app on an iPad - the drag and drop functionality does not work on iPhone #ios11"
|
||||
description: "Demo of the new iOS 11 Drag and Drop. Test this app on an iPad - the drag and drop functionality does not work on iPhone (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-draganddropdragboard
|
||||
---
|
||||
# Drag and Drop Example
|
||||
|
@ -19,7 +22,3 @@ Test this app on an iPad - the drag and drop functionality does not work on iPho
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Mastering Drag and Drop in iOS 11
|
||||
description: "There are two app projects in this sample, intended to be run at the same time on an iPad. The DragSource app contains different types... #ios11"
|
||||
description: "There are two app projects in this sample, intended to be run at the same time on an iPad. The DragSource app contains different types... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-draganddropmastering
|
||||
---
|
||||
# Mastering Drag and Drop in iOS 11
|
||||
|
@ -19,7 +22,3 @@ Swift sample available from [WWDC 2017 Mastering Drag and Drop](https://develope
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins, Amy Burns
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Drag and Drop TableView Example
|
||||
description: "Demo of the new iOS 11 Drag and Drop feature using for a UITableView Test this app on an iPad - the drag and drop functionality... #ios11"
|
||||
description: "Demo of the new iOS 11 Drag and Drop feature using for a UITableView Test this app on an iPad - the drag and drop functionality... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-draganddroptableview
|
||||
---
|
||||
# Drag and Drop TableView Example
|
||||
|
@ -19,7 +22,3 @@ Test this app on an iPad - the drag and drop functionality does not work on iPho
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Craig Dunn
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Adding Realistic Reflections to an AR Experience
|
||||
description: "Use ARKit to generate environment probe textures from camera imagery and render reflective virtual objects #ios11"
|
||||
description: "Use ARKit to generate environment probe textures from camera imagery and render reflective virtual objects (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-environmenttexturing
|
||||
---
|
||||
# Adding Realistic Reflections to an AR Experience
|
||||
|
@ -28,7 +31,3 @@ Xamarin.iOS 12.0, Xcode 10.0 and two or more iOS devices with A9 or later proces
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Even/Odd Number Drag
|
||||
description: "Demonstrates how to use the iOS 11 Drag and Drop APIs within a single iPhone app. The app shows a number in the middle of the screen... #ios11"
|
||||
description: "Demonstrates how to use the iOS 11 Drag and Drop APIs within a single iPhone app. The app shows a number in the middle of the screen... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-evenoddnumberdrag
|
||||
---
|
||||
# Even/Odd Number Drag
|
||||
|
@ -21,7 +24,3 @@ To test this sample you'll need to run it on a device/simulator running
|
|||
iOS 11.
|
||||
|
||||
![Dragging numbers](Screenshots/EvenOddNumberDrag.gif)
|
||||
|
||||
## Author
|
||||
|
||||
Brad Umbaugh
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
---
|
||||
name: Xamarin.iOS - Local Authentication using Face ID or Touch ID
|
||||
description: "Demonstrates how to use Face ID and Touch ID to authenticate the user. Refer to the Introduction to Touch ID guide #ios11"
|
||||
description: "Demonstrates how to use Face ID and Touch ID to authenticate the user. Refer to the Introduction to Touch ID guide (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-faceidsample
|
||||
---
|
||||
# Local Authentication using Face ID or Touch ID
|
||||
|
||||
Demonstrates how to use Face ID and Touch ID to authenticate the user.
|
||||
|
||||
Refer to the [Introduction to Touch ID](https://developer.xamarin.com/guides/ios/platform_features/introduction_to_touchid/) guide.
|
||||
Refer to the [Introduction to Touch ID](https://docs.microsoft.com/en-us/xamarin/ios/platform/touchid) guide.
|
||||
|
||||
![iPhone X showing Face ID processing](Screenshots/faceid-sml.png)
|
||||
|
||||
## See Also
|
||||
|
||||
* [KeychainTouchID Sample](https://developer.xamarin.com/samples/monotouch/ios8/KeychainTouchID/) – for accesing the Keychain
|
||||
* [iOS 8 Local Authentication Sample](https://github.com/xamarin/ios-samples/tree/master/StoryboardTable_LocalAuthentication) - deprecated by this iOS 11 sample
|
||||
* [KeychainTouchID Sample](https://developer.xamarin.com/samples/monotouch/ios8/KeychainTouchID) – for accesing the Keychain
|
||||
* [iOS 8 Local Authentication Sample](https://github.com/xamarin/ios-samples/tree/master/StoryboardTable_LocalAuthentication) - deprecated by this iOS 11 sample
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Large Titles support
|
||||
description: "This sample demonstrates how to enable large titles in the navbar of iOS 11 applications #ios11"
|
||||
description: "This sample demonstrates how to enable large titles in the navbar of iOS 11 applications (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-largetitlessample
|
||||
---
|
||||
# Large Titles support
|
||||
|
@ -14,11 +17,6 @@ This sample demonstrates how to enable large titles in the navbar of iOS 11 appl
|
|||
|
||||
![large titles with appearance](Screenshots/largetitle-sample-sml.png)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Craig Dunn
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - MapKit Sample "Tandm"
|
||||
description: "Demo of new iOS 11 features in MapKit, grouping and splitting markers based on zoom-level. Tandm is a fictional bike sharing... #ios11"
|
||||
description: "Demo of new iOS 11 features in MapKit, grouping and splitting markers based on zoom-level. Tandm is a fictional bike sharing... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-mapkitsample
|
||||
---
|
||||
# MapKit Sample "Tandm"
|
||||
|
@ -24,7 +27,3 @@ Xcode 9.0 or later; iOS 11.0 SDK or later
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins
|
||||
|
|
|
@ -1,23 +1,22 @@
|
|||
---
|
||||
name: Xamarin.iOS - MusicKitSample
|
||||
description: "MusicKit on iOS lets users play Apple Music and their local music library natively from your apps and games #ios11"
|
||||
description: "MusicKit on iOS lets users play Apple Music and their local music library natively from your apps and games (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-musickitsample
|
||||
---
|
||||
# MusicKitSample
|
||||
|
||||
MusicKit on iOS lets users play Apple Music and their local music library natively from your apps and games. When a user provides permission to their Apple Music account, your app can create playlists, add songs to their library, and play any of the millions of songs in the Apple Music catalog. If your app detects that the user is not yet an Apple Music member, you can offer a trial from within your app.
|
||||
|
||||
![MusicKitSample application screenshot](Screenshots/Authorize.png "MusicKitSample application screenshot")
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
![MusicKitSample application screenshot](Screenshots/Authorize.png "MusicKitSample application screenshot")
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Israel Soto.
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - NFCTagReader
|
||||
description: "How to integrate Core NFC Framework into your application to enable NFC tag reading. Overview Core NFC provides NFC tag reading #ios11"
|
||||
description: "How to integrate Core NFC Framework into your application to enable NFC tag reading. Overview Core NFC provides NFC tag reading (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-nfctagreader
|
||||
---
|
||||
# NFCTagReader
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - PDFAnnotationWidgets
|
||||
description: "Demo of iOS 11 features in PDFKit, adding input fields to a PDF document #ios11"
|
||||
description: "Demo of iOS 11 features in PDFKit, adding input fields to a PDF document (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-pdfannotationwidgetsadvanced
|
||||
---
|
||||
# PDFAnnotationWidgets
|
||||
|
@ -14,11 +17,6 @@ This sample is a demo of iOS 11 features in PDFKit, adding input fields to a PDF
|
|||
|
||||
![simulator showing editable PDF document](Screenshots/01.png)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - PDFDocumentWatermark
|
||||
description: "Demo of iOS 11 features in PDFKit, adding a watermark to a PDF document #ios11"
|
||||
description: "Demo of iOS 11 features in PDFKit, adding a watermark to a PDF document (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-pdfdocumentwatermark
|
||||
---
|
||||
# PDFDocumentWatermark
|
||||
|
@ -14,11 +17,6 @@ This sample is a demo of iOS 11 features in PDFKit, adding a watermark to a PDF
|
|||
|
||||
![simulator showing PDF watermark](Screenshots/01-sml.png)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Kevin Mullins, Larry O'Brien
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - SamplePhotoApp
|
||||
description: "A basic Photos-like app to demonstrate the Photos framework. Lists albums and built-in collections (Recently Added, Favorites, etc) #ios11"
|
||||
description: "A basic Photos-like app to demonstrate the Photos framework. Lists albums and built-in collections (Recently Added, Favorites, etc) (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-samplephotoapp
|
||||
---
|
||||
# SamplePhotoApp
|
||||
|
@ -38,10 +41,6 @@ iOS 11.0, tvOS 11.0, or later
|
|||
|
||||
[Original sample](https://developer.apple.com/library/ios/samplecode/UsingPhotosFramework/Introduction/Intro.html)
|
||||
|
||||
## Copyright
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Oleg Demchenko, Rustam Zaitov, and Matthew Leibowitz
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - SiriKit Sample "TasksNotes"
|
||||
description: "This sample is a demo of the new iOS 11 SiriKit domain Lists and Notes. It also uses the Alternative App Name Info.plist setting #ios11"
|
||||
description: "This sample is a demo of the new iOS 11 SiriKit domain Lists and Notes. It also uses the Alternative App Name Info.plist setting (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-sirikitsample
|
||||
---
|
||||
# SiriKit Sample "TasksNotes"
|
||||
|
@ -14,11 +17,6 @@ This sample is a demo of the new iOS 11 SiriKit domain _Lists and Notes_. It als
|
|||
|
||||
![create task list example](Screenshots/CreateTaskList-sml.png) ![set task to complete example](Screenshots/SetTaskAttribute-sml.png)
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Code is released under the MIT license
|
||||
|
||||
## Author
|
||||
|
||||
Craig Dunn
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Vision Face Detection Example
|
||||
description: "Demo of the new iOS 11 Vision framework. It detects faces; use the sample photos in the TestImages directory to give it a try... #ios11"
|
||||
description: "Demo of the new iOS 11 Vision framework. It detects faces; use the sample photos in the TestImages directory to give it a try... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-visionfaces
|
||||
---
|
||||
# Vision Face Detection Example
|
||||
|
@ -15,8 +18,3 @@ This sample is a demo of the new iOS 11 Vision framework.
|
|||
![detecting faces in a photo](Screenshots/found-faces-sml.png)
|
||||
|
||||
It detects faces; use the sample photos in the **TestImages** directory to give it a try (drag them onto the simulator or upload to your device, and **Choose Image...**).
|
||||
|
||||
|
||||
## Author
|
||||
|
||||
Craig Dunn
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Tracking Objects Example
|
||||
description: "Demonstrates the rectangle and object-tracking capability of iOS 11's Vision namespace. These capabilities rely on a live video feed... #ios11"
|
||||
description: "Demonstrates the rectangle and object-tracking capability of iOS 11's Vision namespace. These capabilities rely on a live video feed... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-visionobjecttracker
|
||||
---
|
||||
# Tracking Objects Example
|
||||
|
@ -16,11 +19,6 @@ This program demonstrates the rectangle and object-tracking capability of iOS 11
|
|||
|
||||
After requesting access to the Camera, this application shows a live video feed, as well as a thumbnail of frames being sent to the Vision namespace. The thumbnail shows the results of the image-processing pipeline and is helpful for developers who modify the `VideoCaptureDelegate.CroppedSampleBuffer` method to remove or enhance edge detection or see if it's useful to try other techniques such as dilation, contrast enhancement, thresholding, and so forth.
|
||||
|
||||
The app first runs in a "scanning" mode, when it is detecting rectangles. Detected rectangles are outlined in blue. Touch inside a detected rectangle to activate "tracking" mode. In this mode, the tracked rectangle's bounding box is outlined in either green, yellow, or red, depending upon the confidence of the Vision namespace. (Note that this uses `VNDetectedObjectObservation` observations rather than `VNRectangleObservation` observations, which seem to be more "fragile" in terms of tracking.)
|
||||
The app first runs in a "scanning" mode, when it is detecting rectangles. Detected rectangles are outlined in blue. Touch inside a detected rectangle to activate "tracking" mode. In this mode, the tracked rectangle's bounding box is outlined in either green, yellow, or red, depending upon the confidence of the Vision namespace. (Note that this uses `VNDetectedObjectObservation` observations rather than `VNRectangleObservation` observations, which seem to be more "fragile" in terms of tracking.)
|
||||
|
||||
You'll notice that "tracking" mode isn't noticeably faster or more accurate than "scanning" mode. What tracking _does_ provide is the same object identity over subsequent frames which you can access via the [VNObservation.Uuid](https://developer.xamarin.com/api/property/Vision.VNObservation.Uuid/) property.
|
||||
|
||||
|
||||
## Author
|
||||
|
||||
Larry O'Brien
|
||||
You'll notice that "tracking" mode isn't noticeably faster or more accurate than "scanning" mode. What tracking _does_ provide is the same object identity over subsequent frames which you can access via the [VNObservation.Uuid](https://developer.xamarin.com/api/property/Vision.VNObservation.Uuid/) property.
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Vision Rectangle Detection Example
|
||||
description: "Demo of the new iOS 11 Vision framework. It detects rectangles; use the sample photos in the TestImages directory to give it a try... #ios11"
|
||||
description: "Demo of the new iOS 11 Vision framework. It detects rectangles; use the sample photos in the TestImages directory to give it a try... (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-visionrectangles
|
||||
---
|
||||
# Vision Rectangle Detection Example
|
||||
|
@ -15,8 +18,3 @@ This sample is a demo of the new iOS 11 Vision framework.
|
|||
![detecting rectangles in a photo](Screenshots/found-rectangles-sml.png)
|
||||
|
||||
It detects rectangles; use the sample photos in the **TestImages** directory to give it a try (drag them onto the simulator or upload to your device, and **Choose Image...**).
|
||||
|
||||
|
||||
## Author
|
||||
|
||||
Craig Dunn
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Building a Simple Widget for the Today View
|
||||
description: "This sample code builds a weather app that displays a simple five-day weather forecast using a horizontally paging collection view #ios11"
|
||||
description: "This sample code builds a weather app that displays a simple five-day weather forecast using a horizontally paging collection view (iOS11)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios11
|
||||
urlFragment: ios11-weatherwidget
|
||||
---
|
||||
# Building a Simple Widget for the Today View
|
||||
|
@ -26,7 +29,3 @@ Xamarin.iOS 11.3+ and Xcode 10.0+.
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Vision in Real Time with ARKit
|
||||
description: "Manage Vision resources for efficient execution of a Core ML image classifier, and use SpriteKit to display image classifier output in AR #ios12"
|
||||
description: "Manage Vision resources for efficient execution of a Core ML image classifier, and use SpriteKit to display image classifier output in AR (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-arkitvision
|
||||
---
|
||||
# Vision in Real Time with ARKit
|
||||
|
@ -22,14 +25,10 @@ Xamarin.iOS 11.0, Xcode 9.0 and a device with an A9 (or later) processor
|
|||
|
||||
- [Original sample](https://developer.apple.com/documentation/arkit/using_vision_in_real_time_with_arkit?language=objc)
|
||||
- Documentation:
|
||||
- https://developer.apple.com/documentation/arkit
|
||||
- https://developer.apple.com/documentation/vision
|
||||
- https://developer.apple.com/documentation/coreml
|
||||
- https://developer.apple.com/documentation/arkit
|
||||
- https://developer.apple.com/documentation/vision
|
||||
- https://developer.apple.com/documentation/coreml
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Breakfast Finder
|
||||
description: "A C# port of Apple's Recognizing Objects in Live Capture sample app. It demonstrates how to use the Vision framework and Core ML #ios12"
|
||||
description: "A C# port of Apple's Recognizing Objects in Live Capture sample app. It demonstrates how to use the Vision framework and Core ML (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-breakfastfinder
|
||||
---
|
||||
# Breakfast Finder
|
||||
|
@ -21,7 +24,8 @@ recognize objects in live video.
|
|||
|
||||
## Usage
|
||||
|
||||
**Note**: This sample will not run a simulator. It must be run on a physical
|
||||
> [!NOTE]
|
||||
> This sample will not run a simulator. It must be run on a physical
|
||||
device running iOS 12 or later.
|
||||
|
||||
- Start the app, which opens a camera view.
|
||||
|
@ -31,8 +35,5 @@ coffee, an egg, a banana, a waffle, or a croissant.
|
|||
in the live video.
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
Ported to Xamarin.iOS by Brad Umbaugh
|
||||
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Delivering an Exceptional Accessibility Experience
|
||||
description: "Make improvements to your app’s interaction model to support assistive technologies such as VoiceOver. To see the sample app in action... #ios12"
|
||||
description: "Make improvements to your app’s interaction model to support assistive technologies such as VoiceOver. To see the sample app in action... (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-exceptionalaccessibility
|
||||
---
|
||||
# Delivering an Exceptional Accessibility Experience
|
||||
|
@ -28,7 +31,3 @@ Xamarin.iOS 12.0+ and Xcode 10.0+.
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
|
@ -1,24 +1,27 @@
|
|||
---
|
||||
name: Xamarin.iOS - Grouped Notifications
|
||||
description: "This sample app demonstrates how to use the User Notifications framework to group notifications by their thread identifiers... #ios12"
|
||||
description: "This sample app demonstrates how to use the User Notifications framework to group notifications by their thread identifiers... (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-groupednotifications
|
||||
---
|
||||
# Grouped Notifications
|
||||
|
||||
This sample app demonstrates how to use the User Notifications framework
|
||||
to group notifications by their thread identifiers, a new feature
|
||||
to group notifications by their thread identifiers, a new feature
|
||||
introduced in iOS 12 to make it easier for users to work with notifications.
|
||||
|
||||
![Example grouped and expanded notifications](Screenshots/all-sml.png)
|
||||
|
||||
## Usage
|
||||
|
||||
To use the app:
|
||||
To use the app:
|
||||
|
||||
- Tap the **Message with Alice** button a few times.
|
||||
- Tap the **Choose a new friend** button.
|
||||
|
@ -35,8 +38,5 @@ by swiping down from the top of the device. You will see:
|
|||
notifications not assigned to a specific thread)
|
||||
|
||||
## License
|
||||
|
||||
Code is released under the MIT license
|
||||
|
||||
## Author
|
||||
Brad Umbaugh
|
||||
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - MarsHabitatCoreMLTimer
|
||||
description: "Use the MarsHabitatPricer Core ML model from Apple's Integrating a Core ML Model to demonstrate the performance... #ios12"
|
||||
description: "Use the MarsHabitatPricer Core ML model from Apple's Integrating a Core ML Model to demonstrate the performance... (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-marshabitatcoremltimer
|
||||
---
|
||||
# MarsHabitatCoreMLTimer
|
||||
|
@ -19,7 +22,5 @@ prediction API.
|
|||
![batch processing timer](Screenshots/complete-sml.png)
|
||||
|
||||
## License
|
||||
Code is released under the MIT license
|
||||
|
||||
## Author
|
||||
Brad Umbaugh
|
||||
Code is released under the MIT license
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Integrating a Core ML Model into Your App
|
||||
description: "Add a simple model to an app, pass input data to the model, and process the model's predictions. This app uses a trained model #ios12"
|
||||
description: "Add a simple model to an app, pass input data to the model, and process the model's predictions. This app uses a trained model (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-marshabitatpricepredictor
|
||||
---
|
||||
# Integrating a Core ML Model into Your App
|
||||
|
@ -25,7 +28,3 @@ Xamarin.iOS 11.0 and Xcode 9.0.
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Red & Green Notifications
|
||||
description: "iOS 12 introduced various notification-related features, including Provisional notifications, Notification management features... #ios12"
|
||||
description: "iOS 12 introduced various notification-related features, including Provisional notifications, Notification management features... (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-redgreennotifications
|
||||
---
|
||||
# Red & Green Notifications
|
||||
|
@ -60,10 +63,6 @@ it from Notification Center, and launch the app.
|
|||
Green Notifications app, and tap **Red & Green Notifications Notification Settings**
|
||||
to jump to the in-app custom notification management screen.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Code is released under the MIT license
|
||||
|
||||
## Author
|
||||
Brad Umbaugh
|
||||
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Scanning App
|
||||
description: "This is a port of the Apple sample Scanning and Detecting 3D Objects. The architecture and code design of the app follows the Swift app #ios12"
|
||||
description: "This is a port of the Apple sample Scanning and Detecting 3D Objects. The architecture and code design of the app follows the Swift app (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-scanninganddetecting3dobjects
|
||||
---
|
||||
# Scanning App
|
||||
|
@ -14,19 +17,19 @@ This is a port of the Apple sample [Scanning and Detecting 3D Objects](https://d
|
|||
|
||||
This sample requires a device that supports ARKit's "object scanning" configuration (`ARObjectScanningConfiguration`). This configuration is processor-intensive and may not be supported or may not produce adequate tracking on older hardware. This configuration also "disables ARKit features not necessary for reference object scanning," and should only be used for, essentially, the use-case embodied in this app.
|
||||
|
||||
The app is used by developers to scan a real-world object to create an `ARReferenceObject` definition that can be saved to a file and used in end-user mixed-reality apps (for instance, recognizing a sculpture or factory-floor machine).
|
||||
The app is used by developers to scan a real-world object to create an `ARReferenceObject` definition that can be saved to a file and used in end-user mixed-reality apps (for instance, recognizing a sculpture or factory-floor machine).
|
||||
|
||||
## Usage
|
||||
|
||||
After ARKit initializes, a "ghost" bounding box will appear and try to fit around any object that is in the middle of the screen. Use pinch, pan, and two-finger pan to adjust the size of the bounding box until it is sufficient to encompass the scanned object. Points will appear within the bounding box, showing how well the object is being detected.
|
||||
After ARKit initializes, a "ghost" bounding box will appear and try to fit around any object that is in the middle of the screen. Use pinch, pan, and two-finger pan to adjust the size of the bounding box until it is sufficient to encompass the scanned object. Points will appear within the bounding box, showing how well the object is being detected.
|
||||
|
||||
![Defining the bounding box](screenshots/image1.png)
|
||||
|
||||
When the bounding box fully encloses your object, press "Scan" to begin scanning. Move the camera around the bounding box. As the scan retrieves sufficient points, the corresponding area on the bounding box will be covered with a translucent panel.
|
||||
When the bounding box fully encloses your object, press "Scan" to begin scanning. Move the camera around the bounding box. As the scan retrieves sufficient points, the corresponding area on the bounding box will be covered with a translucent panel.
|
||||
|
||||
![Scanning](screenshots/image2.png)
|
||||
|
||||
Once you've scanned the object from all sides horizontally and from the top, a set of axes will appear. Drag this with your finger to set the origin (within the bounding box) that you wish for your reference object. Press "Test" and a new AR session will begin, looking for your just-created `ARReferenceObject`. Move the object around, light it differently, etc. When the object is recognized, a bounding box will appear.
|
||||
Once you've scanned the object from all sides horizontally and from the top, a set of axes will appear. Drag this with your finger to set the origin (within the bounding box) that you wish for your reference object. Press "Test" and a new AR session will begin, looking for your just-created `ARReferenceObject`. Move the object around, light it differently, etc. When the object is recognized, a bounding box will appear.
|
||||
|
||||
![Testing](screenshots/image4.png)
|
||||
|
||||
|
@ -35,59 +38,67 @@ Press "Share" to save the `ARReferenceObject` to a file that can be used in your
|
|||
## Notes
|
||||
|
||||
### Manual resource management in ARKit and SceneKit apps
|
||||
|
||||
In ARKit, it's crucial to manually manage resources. Not only does this allow high frame-rates, it actually is _necessary_ to avoid a confusing "screen freeze." The ARKit framework is lazy about supplying a new camera frame (`ARSession.CurrentFrame`). Until the current `ARFrame` has had `Dispose()` called on it, ARKit will not supply a new frame! This has the appearance of the video "freezing" even though the rest of the app is responsive. The solution is to always access it with a `using` block (see `ViewControllerSCNViewDelegate.Update` in this example) or manually call `Dispose()` on it.
|
||||
|
||||
Beyond the `ARSession.CurrentFrame`, the major resource that needs to be managed carefully in this app are instances of `PointCloud`. This is a visualization of the raw feature points being sensed by ARKit. While this is not called _every_ frame, it's called often enough that it would lead to significant memory consumption. You'll note that prior to the factory method `PointCloud.CreateVisualization` is called, the app takes care to call `Dispose()` on the current `PointCloud`.
|
||||
Beyond the `ARSession.CurrentFrame`, the major resource that needs to be managed carefully in this app are instances of `PointCloud`. This is a visualization of the raw feature points being sensed by ARKit. While this is not called _every_ frame, it's called often enough that it would lead to significant memory consumption. You'll note that prior to the factory method `PointCloud.CreateVisualization` is called, the app takes care to call `Dispose()` on the current `PointCloud`.
|
||||
|
||||
Another complex use of `Dispose()` relates to notifications. The Apple design uses the Observer pattern to subscribe to various state changes (e.g., `NSNotificationCenter.DefaultCenter.AddObserver(Scan.ScanningStateChangedNotificationName, ScanningStateChanged);` ). You _must_ unsubscribe from such observations while `Dispose()`ing your object or you will get a segfault when the system attempts to alert your now-deallocated object of the notification. The pattern is simple:
|
||||
Another complex use of `Dispose()` relates to notifications. The Apple design uses the Observer pattern to subscribe to various state changes (e.g., `NSNotificationCenter.DefaultCenter.AddObserver(Scan.ScanningStateChangedNotificationName, ScanningStateChanged);` ). You _must_ unsubscribe from such observations while `Dispose()`ing your object or you will get a segfault when the system attempts to alert your now-deallocated object of the notification. The pattern is simple:
|
||||
|
||||
class MyClass : NSObject
|
||||
```csharp
|
||||
class MyClass : NSObject
|
||||
{
|
||||
private NSObject notificationObservationHandle;
|
||||
|
||||
MyClass()
|
||||
{
|
||||
private NSObject notificationObservationHandle;
|
||||
notificationObservationHandle = NSNotificationCenter.DefaultCenter.AddObserver(notificationName, NotificationHandler);
|
||||
}
|
||||
|
||||
MyClass()
|
||||
{
|
||||
notificationObservationHandle = NSNotificationCenter.DefaultCenter.AddObserver(notificationName, NotificationHandler);
|
||||
}
|
||||
|
||||
private bool disposed = false;
|
||||
override protected void Dispose(bool disposing)
|
||||
private bool disposed = false;
|
||||
override protected void Dispose(bool disposing)
|
||||
{
|
||||
if (!disposed)
|
||||
{
|
||||
if (!disposed)
|
||||
if (disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
NSNotificationCenter.DefaultCenter.RemoveObserver(notificationObserverHandle);
|
||||
}
|
||||
disposed = true;
|
||||
base.Dispose();
|
||||
NSNotificationCenter.DefaultCenter.RemoveObserver(notificationObserverHandle);
|
||||
}
|
||||
disposed = true;
|
||||
base.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Note that when implementing the `Dispose` pattern in Xamarin, you must set `disposed = true` prior to calling `base.Dispose()` in objects that are derived from `NSObject`. Xamarin's implementation of `NSObject.Dispose()` calls `Dispose(true)`, which will cause the stack to overflow if `disposed` is not already set.
|
||||
|
||||
Related: There are more shared references within the Swift code than I'd prefer, so I tried to convert as many as possible into properties with `private` setters.
|
||||
|
||||
### Fast, unsafe code to create `PointCloud`
|
||||
|
||||
Because the `PointCloud` is a short-lived object reflecting complex geometry (the raw feature points that ARKit is seeing within the target bounding box), I use `unsafe` code to create it directly from an `NVector3` array rather than loop over each `NVector3`, allocate an `SCNSphere` for that point, add that sphere to the current `SCNNode` etc.
|
||||
|
||||
The `PointCloud.CreateVisualization` combines two techniques to create complex `SCNGeometry` as quickly as possible: first, the array is pinned and accessed as an `NSData` byte buffer. Second, a template `SCNGeometryElement` is created and the data buffer and the template are "zipped together" using `SCNGeometry.Create(SCNGeometrySource[], SCNGeometryElement[])`.
|
||||
|
||||
This is a good technique to have in your toolkit.
|
||||
This is a good technique to have in your toolkit.
|
||||
|
||||
### The threshold-aware gestures are nice
|
||||
|
||||
The gestures for moving and rotating the bounding box and origin only respond to touches that have either moved or rotated more than some threshold amount. The code in `ThresholdPanGestureRecognizer`, `ThresholdPinchGestureRecognizer` and `ThresholdRotationGestureRecognizer` should be quite reusable.
|
||||
|
||||
### Matrix types and performance
|
||||
|
||||
In any 3D application, you're going to be dealing with 4x4 transformation matrices. In SceneKit, these are `SCNMatrix4` objects.
|
||||
|
||||
The `SCNNode.Transform` property returns the `SCNMatrix4` transform matrix for the `SCNNode` _as backed by_ the row-major `simdfloat4x4` type. So, for instance:
|
||||
The `SCNNode.Transform` property returns the `SCNMatrix4` transform matrix for the `SCNNode` _as backed by_ the row-major `simdfloat4x4` type. So, for instance:
|
||||
|
||||
var node = new SCNNode { Position = new SCNVector3(2, 3, 4) };
|
||||
var xform = node.Transform;
|
||||
Console.WriteLine(xform);
|
||||
// Output is: "(1, 0, 0, 0)\n(0, 1, 0, 0)\n(0, 0, 1, 0)\n(2, 3, 4, 1)"
|
||||
```csharp
|
||||
var node = new SCNNode { Position = new SCNVector3(2, 3, 4) };
|
||||
var xform = node.Transform;
|
||||
Console.WriteLine(xform);
|
||||
// Output is: "(1, 0, 0, 0)\n(0, 1, 0, 0)\n(0, 0, 1, 0)\n(2, 3, 4, 1)"
|
||||
```
|
||||
|
||||
As you can see, the position is encoded in the bottom row's first 3 elements. This might be transposed (sideways) to your expectations. The functions `SCNMatrix4 ToSCNMatrix4(this NMatrix4 self)` and `NMatrix4 ToNMatrix4(this SCNMatrix4 self)` use the `M{col}{row}` fields to assure the values are proper, so that's fine, but there _is_ a small performance cost to changing the representation, so avoid needless conversions.
|
||||
|
||||
|
@ -102,40 +113,44 @@ To avoid this, we added the `ScannedObject.LockBoundingBoxForReferenceObjectCrea
|
|||
An alternate possibility would be to re-acquire the reference in the `CreateReferenceObject` handler (i.e., rather than pass in `boundingBox` make another call to `ScannedObject.EitherBoundingBox`) but I’m not sure if there are no consequences to the reference changing during the asynch period of `CreateReferenceObject()`.
|
||||
|
||||
### SimpleBox<T>
|
||||
The class `SimpleBox` is used to wrap .NET value objects in an `NSObject` that can be stored in iOS `NSDictionary` objects and used in the payload for `NSNotification` objects. It is helpful but should be used sparingly, as it will cause Ahead-of-Time compilation (AoT) to generate at compile-time the variations for all the different values of `T`.
|
||||
|
||||
The class `SimpleBox` is used to wrap .NET value objects in an `NSObject` that can be stored in iOS `NSDictionary` objects and used in the payload for `NSNotification` objects. It is helpful but should be used sparingly, as it will cause Ahead-of-Time compilation (AoT) to generate at compile-time the variations for all the different values of `T`.
|
||||
|
||||
### Classes in the `Controllers` directory
|
||||
The Swift code uses five files to organize the behavior of the single class `ViewController`. In C# these would be called "partial classes." I put the code in different classes, as this makes it easier to reason about the state and responsibilities of each individual class.
|
||||
|
||||
The Swift code uses five files to organize the behavior of the single class `ViewController`. In C# these would be called "partial classes." I put the code in different classes, as this makes it easier to reason about the state and responsibilities of each individual class.
|
||||
|
||||
### Minor structural differences
|
||||
I occasionally refactored the Swift code where I thought it helped legibility or reduced repetition. Usually this was in the form of extracting a function.
|
||||
|
||||
I occasionally refactored the Swift code where I thought it helped legibility or reduced repetition. Usually this was in the form of extracting a function.
|
||||
|
||||
One area where there is considerably variance from the Swift code is in the "Utility_Extensions" folder. Xamarin.iOS uses OpenTK vector and matrix classes for manipulating 3D objects and transforms. The OpenTK classes have different APIs and
|
||||
|
||||
A matter of internal debate was the clearest form for porting Swift `guard` statements that assign a local variable if the passed-in variable is not `null`. The options are:
|
||||
|
||||
* Explicit check and branch :
|
||||
- Explicit check and branch :
|
||||
|
||||
var someReference = passedInReference as TargetType;
|
||||
if (someReference == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// ... use someReference
|
||||
```csharp
|
||||
var someReference = passedInReference as TargetType;
|
||||
if (someReference == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// ... use someReference
|
||||
```
|
||||
|
||||
* Pattern match:
|
||||
- Pattern match:
|
||||
|
||||
if (! passedInReference is TargetType someReference)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// ... use someReference
|
||||
```csharp
|
||||
if (! passedInReference is TargetType someReference)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// ... use someReference
|
||||
```
|
||||
|
||||
I chose to use the former solely because the pattern matching form is still relatively new and therefore might be less familiar to some developers.
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Larry O'Brien
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Soup Chef
|
||||
description: "This is a Xamarin port of Apple's Soup Chef sample. It demonstrates how to create an app that makes use of Siri Shortcuts #ios12"
|
||||
description: "This is a Xamarin port of Apple's Soup Chef sample. It demonstrates how to create an app that makes use of Siri Shortcuts (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-soupchef
|
||||
---
|
||||
# Soup Chef
|
||||
|
@ -27,7 +30,7 @@ To use the app, set up an order and assign it a voice shortcut:
|
|||
- Click the **+** button in the upper-right, and create a new soup order.
|
||||
- After creating the order, it will appear on the **Order History** screen
|
||||
in the app. Select the order, then tap **Add to Siri** on the bottom of the
|
||||
screen.
|
||||
screen.
|
||||
- Record a phrase to use to make the same order again in the future with
|
||||
Siri. For example, for an order that contains two bowls of chowder with
|
||||
cheese, you might specify, "Order two bowls of chowder with cheese."
|
||||
|
@ -105,19 +108,19 @@ bindings definitions build as expected:
|
|||
the tool used to generate bindings definitions from the .h and .m files
|
||||
created by Xcode.
|
||||
- Configure your system to use Xcode 10 Command Line Tools:
|
||||
- WARNING: Updating the selected Command Line Tools impacts all
|
||||
- WARNING: Updating the selected Command Line Tools impacts all
|
||||
installed versions of Xcode on your system. When you are done using the
|
||||
Soup Chef sample app, be sure to revert this setting to its original
|
||||
configuration.
|
||||
- In Xcode, choose **Xcode > Preferences > Locations** and set
|
||||
- In Xcode, choose **Xcode > Preferences > Locations** and set
|
||||
**Command Line Tools** to the most current Xcode 10 installation
|
||||
available on your system.
|
||||
- In the terminal, `cd` to the **OrderSoupIntentStaticLib** directory.
|
||||
- Type `make`, which builds:
|
||||
- The static library, **libOrderSoupIntentStaticLib.a**
|
||||
- In the **bo** output directory, C# bindings definitions:
|
||||
- **ApiDefinitions.cs**
|
||||
- **StructsAndEnums.cs**
|
||||
- The static library, **libOrderSoupIntentStaticLib.a**
|
||||
- In the **bo** output directory, C# bindings definitions:
|
||||
- **ApiDefinitions.cs**
|
||||
- **StructsAndEnums.cs**
|
||||
|
||||
The **OrderSoupIntentBindings** project, which relies on this static library
|
||||
and its associated bindings definitions, builds these items automatically.
|
||||
|
@ -266,13 +269,10 @@ with the Swift-based app.
|
|||
|
||||
- After successfully completing an order made via voice, Siri does not
|
||||
report back the success message defined by the **Intents.intentdefinition**
|
||||
file.
|
||||
file.
|
||||
- There is a persistent warning in the application console: "Warning:
|
||||
observer object was not disposed manually with Dispose()"
|
||||
|
||||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
Ported to Xamarin.iOS by Brad Umbaugh
|
||||
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - Tracking Multiple Objects or Rectangles in Video
|
||||
description: "Demonstrates how to apply Vision algorithms to track objects or rectangles throughout a video #ios12"
|
||||
description: "Demonstrates how to apply Vision algorithms to track objects or rectangles throughout a video (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-visionobjecttrack
|
||||
---
|
||||
# Tracking Multiple Objects or Rectangles in Video
|
||||
|
@ -26,7 +29,3 @@ Xamarin.iOS 12.0 or later; Xcode 10.0 or later;
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: Xamarin.iOS - XamarinNL
|
||||
description: "Demonstrates how to use Apple's Natural Language framework to recognize languages, tokenize text into words and sentences, and tag... #ios12"
|
||||
description: "Demonstrates how to use Apple's Natural Language framework to recognize languages, tokenize text into words and sentences, and tag... (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-xamarinnl
|
||||
---
|
||||
# XamarinNL
|
||||
|
@ -17,7 +20,5 @@ tag named entities and parts of speech in a body of text.
|
|||
![Examples of natural language parsing](Screenshots/all-sml.png)
|
||||
|
||||
## License
|
||||
Code is released under the MIT license
|
||||
|
||||
## Author
|
||||
Brad Umbaugh
|
||||
Code is released under the MIT license
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
name: 'Xamarin.iOS - XamarinShot: Creating a Game for Augmented Reality'
|
||||
description: "XamarinShot is an AR game for two to six players, featured in the WWDC18 keynote. Use this sample project to experience it on your device... #ios12"
|
||||
description: "XamarinShot is an AR game for two to six players, featured in the WWDC18 keynote. Use this sample project to experience it on your device... (iOS12)"
|
||||
page_type: sample
|
||||
languages:
|
||||
- csharp
|
||||
products:
|
||||
- xamarin
|
||||
extensions:
|
||||
tags:
|
||||
- ios12
|
||||
urlFragment: ios12-xamarinshot
|
||||
---
|
||||
# XamarinShot: Creating a Game for Augmented Reality
|
||||
|
@ -25,7 +28,3 @@ Xamarin.iOS 12.0, Xcode 10.0 and an iOS device with A9 or later processor. ARKit
|
|||
## License
|
||||
|
||||
Xamarin port changes are released under the MIT license.
|
||||
|
||||
## Author
|
||||
|
||||
Ported to Xamarin.iOS by Mykyta Bondarenko
|
||||
|
|
Загрузка…
Ссылка в новой задаче