iOS SDKの各クラスの完成度について雑感

iOS SDK (Cocoa touchフレームワーク) のAPI群についての勝手な感想。 根拠はなくはないけど基本的に経験からくる主観による。異論その他ツッコミ歓迎。 まだ途中だけど続きがあるかどうかは。。。
53
Hiroyuki-Fujikawa.OXP @cqa02303

@fladdict @k_katsumi ギリギリで使わないで広くとってスクロール開始前に制限かけるとかできないかな?

2011-08-09 00:19:50
kishikawa katsumi @k_katsumi

というか、UIKitでいうと2.0のころから存在するクラスはどれも完成度高いです。それらは3.0になって芸術の域に達した、みたいな。最初にAPIをデザインした人たちはそうとうレベル高かったんでしょうね。

2011-08-09 00:24:32
Yusuke Ito @novi_

@k_katsumi UIKitってちゃんと設計されているクラスは自分が受け身になるような実装をすれば良い訳なんですけど、Popoverは色々教えてあげなきゃいけなかったり。受け身な実装にしてくれればなあと思います。

2011-08-09 00:26:54
kishikawa katsumi @k_katsumi

@novi_ ああ、そうですね。この挙動はここでコントロールするっていう主体がものによって変わるところはイケてない点ですよね。

2011-08-09 00:30:17
Yusuke Ito @novi_

@k_katsumi ええ。なので自分でラッパークラスを書くのが良さそうですね。今iPadアプリを書いているので考えてみようかなあ。

2011-08-09 00:32:04
kishikawa katsumi @k_katsumi

@novi_ あ〜、そですね。みんなそういうの書いてますよね。そのへんがバッドノウハウのかたまりってことなんですよねえ。

2011-08-09 00:33:09
kishikawa katsumi @k_katsumi

そういう意味でいうと、networkActivityIndicatorVisibleなんかはみんなラッパー書いてるだろうから結果論だけどあまりよくない。まあしょうがないんだけど。 http://bit.ly/rjASTj

2011-08-09 00:36:28
kishikawa katsumi @k_katsumi

3.0からのクラスでいうとMapKitは良くできてる。4.0以降で機能追加されたけど、それを使わなくてもプロパティとデリゲートをきちんと使えばかなりなんでもできる。ピンのドラッグだけは面倒だけどネ。

2011-08-09 00:39:25
kishikawa katsumi @k_katsumi

4.0以降で追加されたフレームワークやらクラスはだいたいお任せでただ使うだけみたいのが多くなってまあどれも普通って感じのが多いですね。カスタマイズする余地もないけどまあお任せで凝ったことをしなかったら普通に使える、みたいな。

2011-08-09 00:43:05
kishikawa katsumi @k_katsumi

たとえばナビゲーションバーのボタンにツールバーを突っ込むなんてのが普通に動いて、かつツールバーに設定したスペースや自動リサイズもきっちり正しい挙動を示すってのは素晴らしいなあと思うのです。 http://bit.ly/oHpHzP

2011-08-09 00:47:31
setoh2000 @setoh2000

素晴らしい! RT @k_katsumi: たとえばナビゲーションバーのボタンにツールバーを突っ込むなんてのが普通に動いて、かつツールバーに設定したスペースや自動リサイズもきっちり正しい挙動を示すってのは素晴らしいなあと思うのです。 http://bit.ly/oHpHzP

2011-08-09 00:55:06
深津 貴之 / THE GUILD / note @fladdict

@k_katsumi うーん、説明しずらい・・・ 320x480のScrollViewに、320x320の画像をセンター中心で自然に拡大縮小するのが如何に大変か・・・みたいな感じのイメージなのです。結局あきらめて自分で独自拡張したので近況がよくわからないですが

2011-08-09 00:58:14
kishikawa katsumi @k_katsumi

@fladdict はい、なんとなく何か違うんだろうなあとは思ってました。たしか結構まえに見せてもらったはず、、、Posemaniacsのアプリで使ってるんでしたっけ。

2011-08-09 01:01:56
深津 貴之 / THE GUILD / note @fladdict

@k_katsumi ポーマニのは、UIScrollViewを2重にネストして、内側のビューの座標をリアルタイムに書き換えていたような気がします。うろ覚えですが。

2011-08-09 01:04:05
kishikawa katsumi @k_katsumi

@fladdict UIScrollView on UIScrollViewは2.xのころはうまく動かなかったとかは、、、たぶん関係ないですねえ。ふかつさんのアプリを研究してみますわ。見たらわかるかも。まあでもズームの挙動はお任せなんで合わない場合は作るで正解ですねえ。

2011-08-09 01:06:47
sawat1203 / さわてぃ @sawat1203

UIScrollViewはズームアウトしてコンテンツがScrollViewよりも小さくなると左上に行っちゃう。 http://t.co/CneCPQj

2011-08-09 01:12:16
sawat1203 / さわてぃ @sawat1203

つまり、適当なサイズの背景をつけて、ScrollViewより小さくしなきゃいいんだよな。

2011-08-09 01:13:44
kishikawa katsumi @k_katsumi

@sawat1203 それはたとえばlayoutSubviewsで常にコンテンツのビューのセンターが真ん中に来るように調整するとかで解決できます。スクロールビューの挙動はPhotoScrollerってサンプルコード読んだらかなりマスターできますよ。

2011-08-09 01:19:48
kishikawa katsumi @k_katsumi

@fladdict あー、UIScrollViewのlayoutSubviewsなんかで乗ってるビューの座標を一定に保つなんてのは普通の使い方の範疇なので、そういう話であれば、それが正しい方法ってことになりますねえ。

2011-08-09 01:22:41
satoko @satoko

勉強会行った気分。ためになる。多謝!“@k_katsumi: 「iOS SDKの各クラスの完成度について雑感」をトゥギャりました。 http://t.co/Ogb7JPY

2011-08-09 04:16:39
kishikawa katsumi @k_katsumi

ああ、あとUIScrollViewはその上にボタンやらピッカーみたいな、タッチとかスクロールが競合するものを置く場合なんかも考慮されててdelaysContentTouchesとcanCancelContentTouchesでほぼ制御できる。

2011-08-09 04:24:14
kishikawa katsumi @k_katsumi

ただその逆はたぶん推奨されてなくて、たとえばテーブルビューセルにスクロールビューを置いてスクロールとセルの選択が両方きちんと動くようにするってのは結構めんどう。

2011-08-09 04:26:17
kishikawa katsumi @k_katsumi

StoreKitはお任せクラスでカスタマイズする余地なんかは全然ないけど、担当範囲(自分で描かなければいけない部分とフレームワークに任せられる部分)がはっきりしててドキュメントも分かりやすくはないけれど、必要なことはちゃんとかいてあるし、良いものだと思う。

2011-08-09 04:43:12