MonoTouch

VGAへの出力

VGAケーブルやAVデジタルケーブルで追加されたスクリーンにUIViewを表示する為に以下の様なコードを書いた。 if (UIScreen.Screens.GetLength(0) > 1) { UIScreen screen = UIScreen.Screens[1]; UIWindow awin = new UIWindow(); awin.Screen = screen; UIB…

CGContextで日本語を描画する

DrawメソッドでCGContextを使って日本語を描画しようとしたらどうにも文字化けしてしまう。調べると本家SDKでも同じで、これはNSStringのdrawStringを使うことで回避できるとのこと。これをMonoTouchでやってみた。 public override void Draw (System.Drawi…

特殊フォルダ

Environmentクラスの特殊フォルダ Environment.SpecialFolder を実機で取得した。 特殊フォルダ 戻り値 ApplicationData /private/var/mobile/Applications/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents/.config CommonApplicationData /usr/share Commo…

MonoDevelopをproxyに対応させる

MonoDevelop v2.6 Beta 2がなかなか終了しなくて困っていた。 調べるとどうも終了時にインターネットアクセスを行っている。 しかし環境的にプロキシ経由でなければ通信できない。 結局ソケットがタイムアウトするまで延々と待ち続けているのが原因だった。…

回転の通知を各UIViewで受け取る

回転の通知を各UIViewで受け取るには例えば public class UITextField2 : UITextField { private NSObject deviceRotateNotification; public UITextField2 () { deviceRotateNotification = NSNotificationCenter.DefaultCenter.AddObserver (UIDevice.Orie…

UIPopoverControllerをPresentFromRectで表示するときの引数

ググって見つけたサンプルを参考にこう書いていた。 UIPopoverController popover = new UIPopoverController(viewController); popover.PopoverContentSize = new System.Drawing.SizeF(300f, 300f); popover.PresentFromRect(target.Frame, target, UIPopo…

実機にコンパイルしたバイナリを転送できなくなった

突然、実機にビルドしたバイナリを転送できなくなった。 Please ensure your device is connected... Connected to: iPod Initializing file service... Uploading application Finalizing file service... Connected to: iPod Installing application Unhan…

UIBarButtonItemの隠しAPIを読んでみる

本家SDKだとUIBarButtonItemのinitWithBarButtonSystemItemに100以上の値を指定することで特殊なボタンを作ることができる。これをMonoTouchでやってみた。 using MonoTouch.ObjCRuntime; using MonoTouch.UIKit; using MonoTouch.Foundation; public class …

各種画像

画像一覧 ファイル名 対象デバイス 画像サイズ(px) 表示先 Icon.png iPhone 3G,iPhone 3GS,iPod touch 3rd 57 x 57 ホーム Icon@2x.png iPhone 4,iPod touch 114 x 114 ホーム Icon72.png iPad 72 x 72 ホーム Icon-Small.png iPhone 3G,iPhone 3GS,iPod tou…

Xamarin

Mono再出発なのか? http://tirania.org/blog/archive/2011/May-16.html現時点でMonoTouchの購入もアクティベートもできない状態のようなので、 Macがぶっ壊れてもいいようにバックアップとらなければ。

UIButtonの隠しAPIを呼んでみる

本家SDKだとUIButtonのbuttonWithTypeに100以上の値を指定することで特殊なボタンを作ることができる。これをMonoTouchでやってみた。 using MonoTouch.ObjCRuntime; using MonoTouch.UIKit; using MonoTouch.Foundation; public static class UIGlassButton…

ビューへの変更が画面に反映されない

なにか処理をしているときに処理中の表示を出さなければならなくなった*1。 void Test() { progressView.Hidden = false; //重い処理 progressView.Hidden = true; } この時、progressViewは画面上に一切表示されることなく処理が終わってしまう。 ググるとU…

最初の画面が表示されるまで真っ黒

最初こうしていた。たぶんMonoTouchのテンプレート通り。 public partial class AppDelegate : UIApplicationDelegate { public override bool FinishedLaunching (UIApplication app, NSDictionary options) { window.AddSubview(mainViewController.View);…

シェイクの検知

App起動時にあらかじめUIApplication.SharedApplication.ApplicationSupportsShakeToEditをtrueにしておく。 public partial class AppDelegate : UIApplicationDelegate { public override bool FinishedLaunching (UIApplication app, NSDictionary option…

ビューの順番

個人的な備忘録。 ビューの順番はSubviews配列の最後が最前面として配列の先頭にいくほど後ろ側。 AddSubviewで足したビューは最前面になる。つまりSubviews配列の最後にpushされている。 InsertSubviewで最後面に足したいときは位置の引数を0にする。

InputAccessoryViewが実機で動作しない

UITextFieldやUITextViewにおいてキーボードが表示される時にカスタムビューを追加する手段としてInputAccessoryViewがある。 これはググると public class TestText : UITextField { public override UIView InputAccessoryView { get { UIView view = new …

実機だけで発生する例外

実機上で以下のコードを実行すると string from = ""; Type fromType = from.GetType(); TypeConverter converter = TypeDescriptor.GetConverter(from); 三行目のConverterを取得する所で System.MissingMethodException: Default constructor not found fo…

MonoTouch v4が不安定

少し前にv4がでていたが嫌な予感がしたので放置しておいた。 しかしさすがにSDK4.3対応を考えるとv4にしなければならない。 しぶしぶ入れてはみたものの予想していたとおりとても不安定で結局v3に戻している。 コンパイラが例外を吐いてエラー終了 v3では全…

Info.plistファイル内の独自キーの値を取得する

プロジェクトのルートにあるInfo.plistファイルに追加した独自キーにひもづく値はNSBundle.MainBundle.InfoDictionaryから取得できる。 Dictionary型はNSMutableDictionary型になる。 NSString key1 = new NSString("TEST01") string value1 = NSBundle.Main…

UIView上での左右のスワイプを検出する

UIViewを継承して以下のコードを貼り付ける。 float horizontalTolerance = 10f; public float HorizontalTolerance { get { return horizontalTolerance; } set { horizontalTolerance = value; } } float verticalTolerance = 6f; public float VerticalTo…

TouchesEndedをオーバーライドした時にタッチされた座標を取得する

TouchesEndedをオーバーライドした時にタッチされた座標を取得する。 MonoTouch.Foundation.NSSet型の引数をUITouch型にキャストすればよい。 public override void TouchesEnded (MonoTouch.Foundation.NSSet touches, UIEvent evt) { base.TouchesEnded (t…

継承したUIApplicationを使う

訳あってステータスバーのタッチイベントを独自に取得したくなった。 ググったところ本家SDKでは UIScrollViewをステータスバー領域に重ねて表示してUIScrollViewでハンドル 継承したUIApplication内でタッチイベントを定期的にハンドル という方法が見つか…

UIScrollView内のUIViewのDrawメソッドで描画する

四角や丸やらをUIViewに直接描画しつつ、それをUIScrollViewでスクロールさせようとして四苦八苦した。 構成は単純で UIWindow └UIScrollView └CustomView : UIView こんなかんじ。 CustomView(UIView)のオーバライドしたDrawメソッド内で四角や丸やらを描画…

ステータスバーのタップでUIScrollViewを自動的に最上部にスクロールさせるには

本家SDK同様に条件は一つだけ。 ScrollsToTop属性がTrueなUIScrollViewは一つだけにする これだけ。 UIWindow以下にUIScrollViewが何個存在していても上記条件を守ればOK.追記 UIScrollViewを継承しているUITableViewも対象になる。

アプリケーションアイコンにバッジを表示するには

UIApplication.SharedApplication.ApplicationIconBadgeNumber = 10; これでバッジに10と表示される。

"言語"と"書式"の取得

iOSの設定->一般->言語環境で設定できる"言語"と"書式"の取得方法。 言語 NSLocale.PreferredLanguages配列の一番最初が選択中の言語 string lang = NSLocale.PreferredLanguages[0]; // -> jaとかenとか 書式 System.Threading.Thread.CurrentThread.Curren…

画面の回転に対応する

画面の回転にアプリを対応させるには まずUIViewControllerを継承してShouldAutorotateToInterfaceOrientationをオーバライドする。 public override bool ShouldAutorotateToInterfaceOrientation(UIInterfaceOrientation toInterfaceOrientation) { return…

UIViewを角丸にする。

本当にやりたかったのはUILabelをUITextViewみたいな内側にドロップシャドウがあって、かつ角丸にすること。 以下のコードで角丸にはできた。 UILabel lbl = new UILabel (); lbl.Layer.CornerRadius = 5.0f; lbl.Layer.BorderWidth = 1.0f; lbl.Layer.Borde…

UIPickerViewをポップアップして表示する。

UIPickerViewをポップアップして表示しなければならなくなった。 見つけたサンプルを元に少々手を加えて以下のようにした。 UIActionSheet alert = new UIActionSheet("タイトル", null); alert.Style = UIActionSheetStyle.BlackTranslucent; UIPickerView …

UIPickerViewの選択肢をアイコン+ラベルにする

前回の続き。 UIPickerViewの選択肢をアイコン+ラベルにする。 やりかたとしては本家SDK同様にUITableViewCellを使うようにする。今回はUIPickerViewModel*1を継承してclassを作る。 public class TestData : UIPickerViewModel { string names = new string…