本体温度が下がるまでお待ちください。

先日、電気ストーブにあたりながらバソコンを操作していたら、スボンのポケットに違和感が...


手を突っ込んでみると、異様に熱くなったiPhoneが。ストーブに近すぎてiPhone本体が熱くなってしまったようです。


画面がこんな表示になってました。


iPhone_heat.png


そういえばたしか以前もこんな状態になったことがあって、その時は車で運転中にiPhoneのマッブのナビ機能を使おうと エアコンの送風口にあるカップホルダーに iPhoneを立てて入れてたんですが、エアコンの熱にやられて、たしかこんな画面が出てきました。


こうなってしまったら、あわてずさわがず、本体を涼しいところに置いて冷めるのを待ちましょう。別の情報によると冷蔵庫で冷やすといいらしいという話もありますが、今は冬なので普通に冷たい部屋に置いとけば良いと思います。

熱でダメージを受けていなければ、やがて普通の画面に戻って使えるようになります。

Macでファイルを移動する2つの方法

MacのFinderを使ってファイルを移動する方法について紹介します。


Windowsの場合、エクスプローラーを使ってファイルを別のフォルダへコピーしたり移動したりできますが、Macでも同様にFinderを使ってファイルの移動やコピーができます。
以前は、ファイルを移動するにはFinderで2つのフォルダウィンドウを開いて、一方からもう一方へドラッグする必要があったのですが、今のOSXでは、Windowsのカット&ペーストと似た操作で移動できます。


【方法1】

  1. まず、Finderで対象となるファイルのあるフォルダを開いてファイルを選択し、「右クリック」若しくは「control + 左クリック」でコンテキストメニューを表示させ、コピーを選びます。ショートカットキーの「command + C」でコピーしてもOKです。

    file_move1.png

     

ブラウザの選択を禁止する

ブラウザ上でマウスをドラッグすると内容が選択されてコピーしたりできますが、

ss-copy.png

ドラッグだけでなくダブルクリックでも選択されてしまうので、Webアプリ等の場合はこの挙動が邪魔になる場合があります。

選択をできないようにするには以下の方法があります。


JavaScriptを使う

onselectstartイベントでfalseを返せば選択できなくなります。


document.onselectstart = function() {
  return false;
}

JQueryを使う場合はこんな感じで

Xcodeの便利な機能

前回の記事で別のソースを簡単に探す機能を紹介しましたが、今回もちょっと便利な機能を紹介します。

ソースに記述された宣言等を簡単に参照する機能です。


1.「command」キーを押しながらクリック

ソースの適当な場所、例えば、プロトコルへの適合を記述した部分等で「control」キーを押してみてください。

ss-command.png

マウスカーソルが、手の形に変わりクリックできるようになります。クリックするとその宣言されているソースが開き、該当の場所へジャンプすることができます。これでどのようなメソッドが定義されているか簡単に調べたりできます。


他にも変数名の上で同様にすると、その変数の宣言場所へジャンプできます。

Xcode5で別のソースを素早く参照する方法

いつのバージョンのXcodeから実装されていたのかわかりませんが、今日Xcodeの便利な機能が分かりました。


ソースの編集中に、別のソースの内容を参照したくなる時があります。画面左側のプロジェクトナビゲータから探してクリックして選び直してもいいんですが、ソースの数が増えてくると目的のソースを探すのが大変になってきます。

そんな時はキーボードで、


「Command」+「Shift」+「O(オー)」

を押して、表示された小窓で目的のソースファイル名を入力してやるといいです。ソースファイル名といってもインクリメンタルサーチで部分一致するものを一覧表示してくれるので、5,6文字タイプしたところで後は一覧から選ぶだけでオッケーです。入力が終わったらEnterを押せば、そのソースを表示してくれます。

ss_popup.png

プロジェクト内のファイルに限らず、フレームワークのクラスや、メソッド名等も探すこともできます。

UIAlertViewのキーボードタイプを変える

iPhoneアプリでユーザに確認を求める場合等によくUIAlertViewを使います。


UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"削除の確認"
                                                    message:@"本当に削除してもいいですか?"
                                                   delegate:self
                                          cancelButtonTitle:@"はい"
                                          otherButtonTitles:@"いいえ", nil];
[alertView show];

confirm.png

HTTPのページからJavaScriptでHTTPSで通信する方法

今回は久しぶりにWebネタです。

HTTPのページからHTTPSを使ってJavaScriptでサーバと通信するのは特に問題無さそうにも思えますが、普通にAjaxを使おうとしても拒否されてしまいます。

 

CoreTextを調べてみた

CoreTextというのは、OSXやiOSで使えるテキスト描画用のフレームワークです。

iOS3.2の頃から使えていたらしいので特に新しいフレームワークというわけではありません。またiOSの場合はUIKitがテキスト描画もいい感じに面倒みてくれるのであまり使う機会もないように思います。

ただし、CoreGraphicsを使って画像を出力する目的でビットマップコンテキストへ日本語を描画しようとすると文字化けしてしまうので、そのような時にはCoreTextを使うと日本語も描画することができます。(画面への描画は日本語もちゃんと出力されます。また単にテキスト画像を生成する目的であれば、iPhoneで利用できるフォントを調べる(その2)で使ったやり方でも日本語の出力が可能(しかも簡単!)ですが、画像や文字を一緒にビットマップコンテキストへ描画する場合は、CoreTextフレームワークを使った方が便利です。またCoreTextを使うと、矩形だけでなく任意のパスを指定してその範囲に文字列を描画することができます。)

 

文字化けについてどういうことかというと、英数字等の半角文字は次のようにしてそのままビットマップコンテキストに描画できます。

NSAttributedStringを使ってみる

NSAttributedStringを使うと文字列を装飾して描画することができます。

使いたい属性をNSDictionaryに設定して、NSAttributedStringのインスタンスを生成することで属性付きの文字列を使うことができます。

後から属性を追加したり変更する場合は、NSMutableAttributedStringの方を使います。

 

NSAttributedString UIKit Additions Referenceを見るとiPhoneで使える属性として以下のようなものがあるようです。

 

iPhoneで利用できるフォントを調べる(その2)

前回の記事で作成したフォントの一覧をHTMLに出力してみました。 出力サンプルは画像で出力しています。次のようにして画像(UIImage)に出力しました。

- (UIImage *)makeImageWithFont:(UIFont *)font
{
    static NSString *text = @"ABC abc 123 あいう カキク 漢字";
    CGSize size = [text sizeWithFont:font];
    
    UIGraphicsBeginImageContext(size);
    [text drawAtPoint:CGPointZero
             withFont:font];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
出力に必要な画像のサイズを取得して、グラフィックコンテクストに設定し文字列を出力しています。 出力が終わったらその内容をUIImageに取り込んでいます。