酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Xamarin

Xamarin.FormsでZXingを使ってQRコード/バーコードを生成する

メモです。Xamarin.FormsでZXingを使ってQRコード/バーコードを生成しました。 NugetにはZXing for Xamarin.Formsと書かれたものがあったのですが、どうもPCL側にライブラリを追加したらバーコードが生成できるというものではなかったみたいです。 今回、Dep…

Xamarin.Formsでタブ表示させるためにTabbedPageを使う

メモです。この記事で作成したプロジェクトを流用しています。 タブ表示させる MyTabbedPage.xamlを追加します。 MyTabbedPage.xaml

Xamarin.Formsで詳細ページへドリルダウンさせるNavigationPageを使う

メモです。この記事で作成したプロジェクトを流用しています。 ページナビゲーションをおこなう ListViewの項目を選択すると詳細ページにドリルダウンさせたいです。 ナビゲーションページ(iOSでのいうところのUINavigationController、Xamarin.Formsではな…

Xamarin.FormsでRealm Xamarinを使ってみた

Xamarin.FormsでRealm Xamarinを使ってみました。 プロジェクトを作成する UIを整える RealmSamplePage.xaml RealmSamplePage.xaml.cs Realm Xamarinをインストールする Itemクラスを作る RealmSamplePage.xaml.cs トラブルシューティング 実行時に例外が発…

Xamarin.Macでローカル通知をおこなう

Xamarin.Macでローカル通知をおこないます。 コードを全て掲載すると冗長になってしまうのでgistへアップロードしておきました。 Xamarin.Macでローカル通知をおこなう · GitHub partial void buttonAction(NSObject sender) { var dc = NSUserNotificationC…

Visual Studio for Mac Previewをインストールしました

Connect();のキーノートで、「Visual Studio for Mac Preview」が発表されました。 Connect(); Keynote Releases | Xamarin Releases 早速、自分のMBPにVisual Studio for Mac Previewをインストールしたいと思います。 VS for Macをインストールする Visual…

【2015/8/31まで】Windows Phoneアプリ開発者は無料でXamarinのライセンスがもらえるよ!

C#でiOSやAndroidのアプリを開発できる「Xamarin」のライセンスを無料で入手できるキャンペーンをやっているようです。 Xamarinの代理店エクセルソフトの田淵さんのブログによると…… 2015/8/17 以前に公開された Windows Phone アプリ個人開発者に無料の Xam…

C#で半角カタカナを全角カタカナに変換する

public static class StringKatakanaConvertExtension { private static Dictionary<char, char> halfToFull = new Dictionary<char, char> { { '\uFF75', '\u30AA' }, // オ { '\uFF8E', '\u30DB' }, // ホ { '\uFF82', '\u30C4' }, // ツ { '\uFF78', '\u30AF' }, // ク }; public </char,></char,>…

Xamarin.iOSでStoreKitを使って広告非表示やアイテム課金などの商品(プロダクト)の一覧を取得する

Xamarin.iOSでStoreKitを使って広告非表示やアイテム課金などの商品の一覧を取得してみましょう。 StoreKit上では前述の商品のことを「プロダクト」と呼びます。StoreKitでの基本的な処理の流れとしては、SKProductXXXXクラスでプロダクトの情報を取得して、…

Mac OS XでXamarin.iOSのクラスライブラリをNUnitを使ってコマンドラインでテストする

勘違いしていたので、以下取り消します。 Mac OS XでXamarin Studioを使ってXamarin.iOSでiOSアプリを開発していると、Jenkins等のCIツールを使ってビルドの自動化をする際にコマンドライン(ターミナル)からユニットテストを動かしたい要望が出てきます……よ…

Xamarin.iOSでMD5やSHA1のハッシュ値を計算する

MD5(Message Digest Algorithm 5)は、入力に対して128ビットのハッシュ値を出力するハッシュ関数のことで、不可逆的な一方関数を用いているところから認証などで広く使われています。他にもダウンロードしたファイルが第三者によって作者(配布者)が意図しな…

Xamarin.iOSを使ってiOSデバイスの機種名を取得するライブラリを作りました

過去に「Xamarin.iOSでiOSデバイスの機種名(モデル名)を取得する - 酢ろぐ!」でiOSデバイスの機種(モデル)名を取得する方法を紹介しました。この方法は機種名を取得するものと言うよりかはiPhone7,1といったデバイスモデルの識別子を取得する方法でした。 …

Xamarin.iOSでHtml Agility Packを使ってHTMLをスクレイピングする

この記事は「Xamarin Advent Calendar 2014 - Qiita」の10日目です。 Xamarin Advent Calendarは、Xamarinを使ったアプリ開発のTipsが1日1つずつ紹介されています。この記事はXamarin.iOSについて書いていますが、他の方はXamarin.AndroidやXamarin.Formsな…

Xamarin.iOSで新しいプロジェクトを作成する(Unified API)

過去にXamarin.iOSとXamarin.Macは別々のコードでメンテナンスされていて、さらに64bit対応されていませんでした。それを受けて、2014年9月に品質管理と64bit対応のため統合された「Unified API」が登場しました。過去のものは「Classic API」という位置付け…

Xamarin.iOSでサイズを指定して空の(または単色の)UIImageオブジェクトを生成する

本記事では、Xamarin.iOSを使ってUIImageオブジェクトをプログラム(コード)だけで動的に生成する基本となる方法を紹介します。Objective-Cで実現する方法については下記の記事をご覧ください。 サイズを指定して空のUIImageオブジェクトを生成する - iOSアプ…

Xamarin.iOSで画像(UIImage)をカメラロールへ保存する

Objective-Cで画像を保存するにはUIImageWriteToSavedPhotosAlbum関数を使いました。Xamarin.iOSで同じことをしたかったのですが検索能力が低くて該当するメソッドを見つけることができませんでした。 UIImageWriteToSavedPhotosAlbum関数に相当するメソッド…

Xamarin.iOSでDictionary<TK, TV>型からNSDictionary型オブジェクトへ変換する

TinamiをみるアプリをXamarin.iOSで作りました。実験的な作り方をしていて、まだほとんど何もできません(Tinamiのランキングを見て、ふぁぼるくらいです)。 Illust CatcherKENJI WADAエンターテインメント無料 このアプリでは、アプリの設定値を保存するのに…

Xamarin.Androidでアラート(AlertDialog)を使ってメッセージを表示する

Xamarin.Androidでアラートを表示します。 var alertDialog = new AlertDialog.Builder(this); alertDialog.SetTitle("title"); alertDialog.SetMessage("Message"); alertDialog.SetPositiveButton("Positive", (sender, args) => { // Positiveボタンをタ…

Xamarin.Androidの開発Tipsの記事まとめ

随時更新していきます。ここまで書いてから一覧性が悪いような気がしてきました。 Xamarin.Android開発ことはじめ 画面やUIパーツ 画面遷移 テキストを表示させるラベル(TextView) ボタン(Button) 画像を表示するビュー(ImageView) アラート、ダイアログ(Ale…

【解決済み】Xamarin.Androidで「SimpleListItem1」などの組み込みのリストアイテムのレイアウトの定義値が存在しなくって困った件

Xamarin.iOSで作っていたアプリが一通りできたので審査に出しました。同じアプリをXamarin.Androidで作るにあたってリストビューってどうやって表示するんだろうと調べてみました。 ListViewに文字列を表示させるだけであれば難しくなさそうと思って実装して…

Xamarin.iOSでiOSバインディングプロジェクト(Unified API)を作成するとビルドエラーが発生する

XamarinではBeta channelを使用していて、最新バージョンまでアップデートしています。 Xamarin.iOSを使ってアプリを書いているのですが、とある広告SDKを組み込もうと思った時にビルドエラーが発生してしまうことが分かりました。 .aファイルをインポートし…

Xamarin.iOSでXamarin.Authを使ってKeychainにパスワードを保存する

Xamarin.AuthをXamarin Components Storeからインストールする Componentsフォルダを選択して、右側に設定ボタンをクリックするとコンテキストメニューが出てくるのでGet More Components...を選択します。 Xamarin Componentsのダイアログが表示されるので…

Xamarin.iOSで画像をUIImageViewに表示させる

Interface Builderを使用せずに、スクリーン上にイメージを表示させる方法です。UIImageViewを生成してUIImageオブジェクトを設定します。 var imageRect = new RectangleF(0f, 0f, 320f, 109f); using (var myImage = new UIImageView(imageRect)) { myImag…

Xamarin.iOSで自動ロック(スリープモード)に突入させないようにする

セキュリティ、および節電の為にiPhoneやiPadを放置していると自動ロックがかかり、スリープ状態に突入します。 自動ロック(スリープモード)を無効にする 動画閲覧アプリなど長時間ユーザーが触らないことが想定できます。デバイスを触らずに放置していた際…

Xamarin.iOSの開発Tipsの記事まとめ

日本語で書かれたXamarin.iOSについてのTipsがあまり検索で引っかからないので忘備録代わりにメモしています。基本的時自分用に書いているのでザックリとした記載になっていますが、Xamarin.iOSでなにかやりたいという時の逆引きとして使っていただけると嬉…

Xamarin.iOSで指定したフォント名で描画する

UIFontを生成する際にUIFont.FromNameメソッドを使うことで指定したフォント名のUIFontオブジェクトを生成することが可能です。UILabelのFontプロパティに生成したUIFontオブジェクトを設定することで指定したフォントで文字列が表示されます。 特にXamarin.…

Xamarin.iOSでAsset CatalogからUIImage型の画像を取得する

下図のように「NotFoundImage.imageset」という名前でAsset Catalog(xcassets)があったとします。 以下のコードでUIImage型の画像オブジェクトを取得することができます。 var defaultImage = UIImage.FromBundle("NotFoundImage"); 関連記事 Xamarin.iOSを…

Xamarin.iOSでiOSデバイスの機種名(モデル名)を取得する

iOSデバイスも当初と比較するとiPad、iPod、iPhoneとそれぞれの派生モデルが複数登場してきました。搭載されているメモリや画面サイズなどアプリによって適切な表現方法が異なるケースがよくあります。 Objective-Cを使ってモデル名(機種名)を取得する方法は…

Xamarin.iOSでUIImage型のバッファとbyte[]型とを相互に変換する

Xamarin.iOSでUIImage型のバッファとbyte型とを相互に変換してみましょう。 UIImage型とbyte型とでは相互に直接型の変換をおこなうことができません。一度、NSData型に変換した上で希望する型への変換をおこないます。 UIImageとbyteとを相互に変換する UIIm…

Xamarin.iOSでUnwind Segueを使って前の画面に戻る(Storyboard使用時/プログラム編)

iOSで表示された画面はスタック構造で履歴が管理されており、pushViewController:animated:メソッドやpopViewControllerAnimated:メソッドを使用することで、指定した画面へ遷移したり遷移元の画面に戻るということをしていました。 iOS 5でStoryboardが導入…

Xamarin.iOSでNSUserDefaultsにデータを保存する

iOSでアプリケーションの設定値などを永続的に保存するために使われる方法のひとつにNSUserDefaultsがあります。iOSには他にもCoreDataやファイルとして保存することができますがNSUserDefaultsはその中でも最も簡単な方法でしょう。 文字列をNSUserDefaults…

Xamarin.iOSでUIActionSheetを表示する

Xamarin.iOSでUIActionSheetを表示させます。 var title = "サインインするサービスを選択します"; using (var sheet = new UIActionSheet(title, null, "Cancel", null, new []{ "pixiv" })) { sheet.Clicked += (sx, ex) => { Console.WriteLine("clicked.…

iOSアプリからWindowsストアアプリやXamarin.iOSへ移植したい方へ。Objective-C to C#変換ツール「Automagical」が出ました

生存戦略しましょう! by Akkun on pixiv スマートフォンアプリ開発に従事している方は、案件によってC#(Windows Mobile、Windowsストアアプリ)であったりObjective-C(iPhone/iPad)であったり、Java(Android)であったり各プラットフォームによって様々な言語…

C#でISBN-13からISBN-10へ変換する/ISBN-10からISBN-13へ変換する

個人的にネットで書籍を買う時に使うのが楽天ブックスとAmazonです。 どちらのショップでもISBNの表記を見つけられるはずです。ISBNとは書籍を管理する番号です。ISBNの規格には10桁で管理するISBNと13桁で管理するISBN-13が存在しています。 基本的にはISBN…

Xamarin StudioでPCLプロジェクトを生成して、Visual Studioでターゲットフレームワークを変更後にHttp ClientをNuGet経由で導入して、Xamarin Studioで開くとクラッシュする

タイトルの意味わかる? あとでちゃんと調べますが、とりあえず再現手順と回避方法だけ書いておきます。 環境 バージョン Windows Windows 8.1 Pro 日本語版 Visual Studio Visual Studio 2013 Ultimate 日本語版 Xamarin Studio Alpha channel (2014/2/2時…

Xamarin for Visual StudioをインストールしたらWindowsストアアプリプロジェクトのXAMLが正しく表示されなくなった

Xamarin for Visual Studioをインストールしたら、Visual Studio 2013でのWindowsストアアプリプロジェクトのXAMLデザイナーが、下図のように正しく表示されなくなってしまいました。 XAMLデザイナーを開いていると50以上のビルドエラーが発生してしまい、XA…

Xamarin.iOSで乱数を使う

乱数を取得するには、System名前空間のRandomクラスを使います。 乱数を取得する Random r = new Random(); var randomNumber = r.Next(); 0以上10未満の乱数を取得する Random r = new Random(); var randomNumber = r.Next(10); 5以上10未満の乱数を取得す…

Xamarin.iOSでUIAlertViewを使ってアラートを表示する

すみません。更新が長いこと空いてしまっていました。今日からまたXamarin Studioを使った開発Tipsを発信していきたいと思います。 Xamarin.iOSでアラートを表示させてみましょう。.NET Frameworkでアラート表示と言えばMessageBox.Showメソッドを使いますが…

Xamarin.iOSで現在時刻を取得する

Xamarin.iOSを使って現在時刻を取得します。 var currentTime = DateTime.UtcNow; Console.WriteLine ("Date/Time: " + currentTime); 関連記事 Xamarin.iOSを使ってアプリ開発する際に逆引きとしてお使いください。 Xamarin.iOSの開発Tipsの記事まとめ - 酢…

Xamarin.iOSでバッググランド処理するスレッドを起動する

新しいスレッドを作ります。 var thread = new Thread(NewThreadMethod as ThreadStart); thread.Start(); 新しいスレッドが呼び出されるメソッドを作ります。 [Export("NewThreadMethod")] void NewThreadMethod() { using(var pool = new NSAutoreleasePoo…

Xamarin.iOSでバイブレーションとシステムサウンドの再生を鳴動させる

バイブレーションさせる SystemSound.Vibrate.PlaySystemSound(); cafファイルを再生する var sound = new SystemSound(new NSUrl("audioFile.caf")); sound.PlaySystemSound();

Xamarin.iOSでパラパラ画像を変えるアニメーションを実装する

Xamarin.iOSでパラパラアニメを実装します。 // パラパラアニメさせる画像の一覧をリストに追加する var images = new List<UIImage>(); images.Add(UIImage.FromFile("img1.png")); images.Add(UIImage.FromFile("img2.png")); images.Add(UIImage.FromFile("img3.pn</uiimage>…

Xamarin.iOSでフォルダのパスを取得する

.NET FrameworkではEnvironment.GetFolderPathメソッドを使うことでフォルダパスを取得することができます。Xamarin.iOSをiPhoneシミュレータで実行した場合に取得できるフォルダパスを調べてみました。 string dir = string.Empty; dir = Environment.GetFo…

Xamarin.iOSでNSData型とbyte[]型とを相互に変換する

.NET Frameworkでのbyte型をXamarin.iOSでのNSData型に変換、または逆にNSData型をbyte型に変換してみましょう。 byte[]型をNSData型に変換する public static NSData ToData(this byte[] bytes) { var data = new NSMutableData(); using (var strm = data.…

Xamarin.iOSでNSString型とstring型とを相互に変換する

.NET Frameworkでのstring型をXamarin.iOSでのNSString型に変換、または逆にNSString型をstring型に変換してみましょう。 string型をNSString型に変換する string str = "hello. my world!"; NSString nsstr = new NSString(str); NSString型をstring型に変…

Xamarin.iOSでNSDate型とDateTime型とを相互に変換する

.NET FrameworkでのDateTime型をXamarin.iOSでのNSDate型に変換、または逆にNSDate型をDateTime型に変換してみましょう。 NSDate型をDateTime型に変換する public DateTime NSDateToDateTime(NSDate date) { var baseDate = new DateTime(2001, 1, 1, 0, 0, …

Xamarin Studioを使ってみよう!その10 - Retina 4インチかどうか判定する

前回までのTipsでは、Xamarin.iOSを使って「デバイスがiPadかiPhoneか判定する」「Retinaディスプレイかどうか判定する」をご紹介してきました。今回は、それらのTipsを使用して、液晶がRetinaの4インチ*1かどうかを判断したいと思います。 using System; us…

Xamarin Studioを使ってみよう!その9 - Retinaディスプレイかどうか判定する

Xamarin.iOSで、使用中のデバイスがRetinaディスプレイなのか、標準解像度(非Retina)なのかを判定することがあります。Objective-Cを使ってデバイスがRetinaディスプレイかどうかの判定する時は、以下のようにUIScreenクラスのscaleプロパティを使用します。…

Xamarin Studioを使ってみよう!その8 - デバイスがiPadかiPhoneか判定する

Xamarin.iOSで、使用中のデバイスがiPadなのか、iPhoneなのかを判定することがあります。Objective-Cを使ってデバイスがiPadかどうかの判定する時は、以下のようにUI_USER_INTERFACE_IDIOM関数を使用します。 + (BOOL) isPad { return UI_USER_INTERFACE_IDI…

Xamarin.iOSで「LINEで送るボタン」機能を実装する

id:griffin-stewie さんの「iOS で「LINE で送る」を実装する」をXamarin.iOSで実装しました。CH3COOH/Softbuild.Social.Line CH3COOH/Softbuild.Social.Line · GitHubObjective-Cで書かれたコードをXamarin.iOS向けにC#で移植するとどんな感じになるか、実…