iOS SDKの各クラスの完成度について雑感
UIKitをはじめ、Cocoa Touchのフレームワークはかなり完成度高いんだけど、その中で比べるとアレなクラスとかイマイチ信用できないフレームワークとかはやっぱりあるからそういうのまとめたら役に立つかなあとふと思った。
2011-08-08 23:16:58例えばUIScrollViewとUITableViewは超名作で特にiOS 3以降は普通にクラスを使うだけでほとんどの要求仕様は満たせる、とか。
2011-08-08 23:19:31@shachi @cqa02303 @singo405 @hitoriblog ただですねえ、一般的な文章にするのはすごい難しいんだなあ。少人数の勉強会とかで話すってのとかだとそんなに難しくないんだけど。
2011-08-08 23:21:42@k_katsumi @shachi @singo405 @hitoriblog 書記さん必須ですか。
2011-08-08 23:22:59.@ReplicantNexus6 Address book APIはとっつきにくくて、コードも冗長になりがちだけど、ほぼすべてのデータに自由にアクセスできるし、挙動におかしな点はあまりない(データ構造がOpaqueだから構造に依存してると変わって困ったりするけど)ので、
2011-08-08 23:26:28.@ReplicantNexus6 僕としてはあれは普通ですね。ドキュメントはあるし、強いて言うなら正しく動くサンプルとかがたくさんあれば解決する問題かなあと。とっつきにくい原因はSQLiteで可変のカラムを実現してるから、が大きいと思うし、その辺がつかめればそんなには。
2011-08-08 23:30:063.2で追加されたiPad専用のクラスはどれもイマイチ。具体的にはUIPopoverControllerとか、UISplitViewControllerとか。あとひとつくらいあった気がするけど思い出せない。
2011-08-08 23:45:44@fladdict iPadを担当したひとはスクロールビューを作った人ほどのレベルじゃなかったんでしょうねえ。。。
2011-08-08 23:49:35@k_katsumi @fladdict popoverはそんなに悪くない感じですよ。split view controllerはなんかの冗談みたいなダメ実装ですけれど><
2011-08-08 23:50:45@akisutesama @k_katsumi 個人的には、スクロールビューも挙動がブラックボックス化されすぎてるし、ディフォでは左上からズームの基準点動かせなかったりと僕は色々不満があったり・・・ 最近は無問題ですが 。
2011-08-08 23:54:53@akisutesama Popoverはダメでしょ。保持しとかないといけないとか、回転対応とか、モーダル表示とかサイズ変更とか。そういう挙動のコントロールをどこでするかってのがバラバラで、いちいちデバイスで確認して、アドホックな対応を入れていかないといけない、みたいな。
2011-08-08 23:56:25@fladdict スクロールビューはプロパティの値と載せるビューの組み合わせでかなりのカスタマイズができて、InputからOutputがきちんと予測可能なのです。だからできるできないの判別が容易でそこからはみ出る要求についてはしょうがない、ですね。。。
2011-08-09 00:02:46@fladdict ズームについては少なくとも3からはピンチした指の中央からズームされると思うんですけど違います?
2011-08-09 00:03:59@k_katsumi あれ? ズームアウトしてくと、ディフォでセンターでなく左上が基準点になる挙動って治ってましたっけ? あれはWebViewを前提に実装されてて、写真のズームするときにいつもキモイなーと思ってたのですが
2011-08-09 00:06:26スクロールビューは普通にプロパティでカスタマイズできる余地が豊富で(要するに機能が豊富で)それだけで大抵のことは高いレベルで実現可能で、それらはキチンと予測可能なとこが完成度高い。それ以上に高度だったり複雑は要求は作るしかないですネ。
2011-08-09 00:09:01@fladdict お、ズームアウトっすか。。。どうだったかな、と思って試してみましたけどピンチした指の真ん中は固定されてズームアウトする、という挙動になってます。
2011-08-09 00:12:58Popoverはいちいち動きを確認して、おかしな挙動が見つかったらそれを抑えこむコードを書くということをする、要はバッドノウハウが多い。スクロールビューはこれはこうすればOK、これは無理、ってちゃんとわかる、みたいな。
2011-08-09 00:15:45