AutoLayout 絡みがきちんと動かなくて,sizeHint
がヒントでないのでは? と思ったらその通りでした。
AutoLayout 辛い…… AutoLayout 辛い…… モノトーンです。お久しぶりです。
開発の記事を書くのはチョー久々になる気がします。今日は AutoLayout の話。
ReactiveUI を使えばかなりの部分が省略できるのでとても重宝していますが,昔の名残なのか知りませんが,sizeHint がそのまま UIKit に渡されて絶対値で TableViewCell を固定してしまう問題があります。単純に,sizeHint に無理やりキャストした UITableView.AutomaticDimension
を入れるだけで解決できます。
using System; using ReactiveUI; using UIKit; namespace SampleProduct { public partial class SampleTableViewController : ReactiveTableViewController<ViewModels.SampleViewModel> { public SampleTableViewController(IntPtr handle) : base(handle) { } public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); TableView.RegisterNibForCellReuse(SampleCellView.Nib, SampleCellView.Key); } public override void ViewDidLoad() { base.ViewDidLoad(); ViewModel = new ViewModels.SampleViewModel(); TableView.Source = new ReactiveTableViewSource<ViewModels.RecentViewModel>( TableView, ViewModel.Samples, SampleCellView.Key, (float)UITableView.AutomaticDimension); // ←ここ } } }
参考は Swift での tableView:heightForRowAtIndexPath:
に直接 UITableViewAutomaticDimension
を渡しているところから。
ReactiveUI 最高