日々精進

新しく学んだことを書き留めていきます

UITableViewの並べ替え用アイコンの位置を変える

UITableViewの並べ替え用アイコン(ソフトバンクのロゴみたいやなつ)の位置を変えようとしたらえらい苦労した。
UITableViewのセルの並べ替え機能はUITableViewCellReorderControlに実装されているらしい。
が、UITableViewCell内にあるUITableViewCellReorderControlのインスタンスはPrivateなので直接参照できない。
よってcellのsubviewの中でUITableViewCellReorderControlクラスのものを探して参照を取得する必要がある。
で、UITableViewCellReorderControlインスタンスのframeを変更すればOKかと思ったらだめだった。Viewを描画する直前にフレームワーク内でframeの値を上書きしているらしい。
ただ、アイコンの画像は上書きされないので変更可能。
UIViewを作ってUITableViewCellReorderControlにaddSuvViewしてそのUIViewにアイコンを配置したり、イベントを捕まえたりすればアイコンの位置を変えたり、セル全体をつかめるようにすることは可能。
参考:http://b2cloud.com.au/how-to-guides/reordering-a-uitableviewcell-from-any-touch-point