タグ

ブックマーク / akisute.com (7)

  • iOSのフォントのお話

    最近フォント周りについて深く掘り下げる機会がありましたので、その際のメモを残しておこうと思います。かなり読む人置いてけぼりな中身になってますが、フォントを詳しく触り始めるとなるほどーとためになる(と思う)のでどうかご了承ください(´・_・`) UIFontのプロパティについて UIFontにはフォントに関する数値を表すプロパティが存在します。いろいろありますが、もっとも重要なのは以下に列挙するプロパティです。 pointSize lineHeight ascender descender leading capHeight 以下の画像を見ると非常にわかりやすいかと思います。 参照元: https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/Cus

    iOSのフォントのお話
  • Swift で __conversion メソッドを使ってカスタムの型変換を定義する方法

    2014/10/21追記: Xcode 6.0 beta 6以降、__conversion()を使った暗黙的なas演算子を用いた型変換はサポートされていません。Xcode 6.1(Swift 1.1)現在、暗黙的な型変換を行う手段はないため、型変換を行いたい場合はイニシャライザを定義する方法を取るのが通例として良いと思います。 class 変換対象の型 { init(_ obj: 変換元の型:) -> 変換対象の型 { return 適当に変換対象の型を返す } } Swiftではas演算子を使ったり、型の定義されている変数・定数へ代入したり、メソッド呼び出しの引数にオブジェクトを渡す際に型変換が行われますが、デフォルトでは対応していない型変換があったりします。例えばStringはasを使ってもIntに変換することはできません。 また、SwiftではnilはNilTypeという型のシングル

    Swift で __conversion メソッドを使ってカスタムの型変換を定義する方法
  • 既存の Objective-C のメソッド引数の Swift 上での扱われ方を調べてみた

    前置き こちらの記事には2014/06/09現在、公式にはリリースされていないiOS8プレリリースドキュメントへのリンクが含まれます。iOS8にて新しく追加された内容には一切触れておらずAppleとのNDA規約にも違反するものではないという認識ですが、場合により予告なく削除する可能性があります。予めご了承ください。 題 iOS8プレリリースドキュメントを眺めていて気になったのですが、ほとんどのCocoaのメソッドの引数に!がついています。例えばNSKeyValueObservingプロトコルのaddObserver:forKeyPath:options:context:メソッドのシグネチャは以下のようになっています。 func addObserver(_ anObserver: NSObject!, forKeyPath keyPath: String!, options options

    既存の Objective-C のメソッド引数の Swift 上での扱われ方を調べてみた
  • Swift を使ってみてがっかりした点まとめ

    数日間iOS8/Xcode6/Swiftな環境で色々試してみて、Swiftを使っていて思ったよりがっかりした点が多かったのでちょっとまとめてみようと思います。 動的な処理がSwiftだけでは一切できない [NSObject performSelector:]の類と、NSInvocationがSwiftからは一切呼び出せません。使おうとすると怒られます。objc/runtime.hは試していませんが、同様に直接Swift経由では呼び出せず間にObjective-Cをかます必要があるのではないかと思われます。 @optionalなprotocolが限定的にしか使用できない 具体的には@objc属性を付けないと使えません。しかしながらこのような後方互換性のためだけに存在する属性をいつまでもAppleがサポートするかは疑問が残るというのと、もう一つ以下の様な問題があります。 @objc属性のついた

    hush_puppy
    hush_puppy 2014/06/06
    とりあえず、循環参照しようがしまいが全てのクロージャーに`[unowned self] in`って書いとけばいいのかな?
  • iOS SDK 7.1 / Xcode 5.1にアップグレードした時に踏んだ地雷まとめ

    日iOS SDK 7.1 / Xcode 5.1にアップグレードを行った際にぶつかった所々の問題とTipsをまとめておきたいと思います。 arm64対応とCocoaPods Xcode 5.1からデフォルトのビルド設定$(ARCHS_STANDARD_32_BIT)がarm64、要するに64bit対応を含むようになり、arm64 armv7 armv7sの3つのアーキテクチャに対してビルドを行うようになりました。ソースコードからビルドを行っている場合は大抵問題ないと思うのですが、以下の様なケースでarm64対応を切りたい場合があります。 プロジェクト内にarm64アーキテクチャに対応していないstaticライブラリが含まれている場合。 64bitになると危険なバグが発生するおそれがあるコードが含まれている場合、例えばCGFloatやNSIntegerのサイズが変化したり、各種ポインタのサ

  • Python で Xcode のビルドスクリプトを書く方法

    以前こんな記事を書きましたが、今回はもっと実践的なお話。PythonでXcodeのビルドスクリプトを書いてハッピーになろうというお話です。 ■なぜXcodeのビルドスクリプトを書くのか Xcodeのビルド機能だけでは出来ないことをやりたいからです。たとえば、特定のディレクトリの中に入っているリソースを、ビルド時にアプリにパッケージングしたい。ビルドする前に、特定のリソースを暗号化して、アプリにパッケージングしたい。といった要望が結構ありますが、これらはビルドスクリプトを使えば簡単に可能になります。 手でいちいちやるより楽で安全ですね。 ■なぜPythonか 理由はいくつかあります。Windows, Mac, Linux, 全ての環境で動く。したがって、万が一のときにはビルドスクリプトだけを移植できる。sh とか csh とか非力すぎてやってらんない。 zsh もつかえるけど Python

    Python で Xcode のビルドスクリプトを書く方法
  • 自分なりの iPhone アプリ開発手法とかこだわりとか書いてみた

    Twitter で vの人こと @voluntas さんに 無 茶 振 り されたので、自分なりのポリシーとかこだわりとか開発手法とかをまとめてみることにしました。今仕事iPhone アプリの開発を主にやっているので、 iPhone アプリに関する内容が多いですが、それ以外の開発でも使えると思います。 あまり技術的な内容やツールに関する内容はありません。それらは別エントリーにまとめようと思います。 ■大前提: 自分を知る まず何はなくともこっからです。なんだか開発とか全然関係ないじゃないか、怪しい自己啓発じゃねえかと思われるかもしれませんが、敵を知り己をを知れば百戦危うからずと昔のエライ人も言ってます。それにそもそも私がどのような人間なのかを理解しないと、せっかくの開発手法もそのまま真似してはうまく合わない・上手く回らない・賛成できないということになりますので、非常に大事だと思います。

  • 1