iOSのアプリで一連の操作をしたのちに結果(レポート)を表示したいと思います。結果のフォーマットはありふれたもので、概略は

---------------------(以下概略)

基本情報
ユーザ名:〜
日時:〜
総合スコア:90点

グラフ
 ここにグラフを表示する

詳細結果
 ここに表(UICollectionView)を表示する

---------------------(以上概略)

のようなものです。各々の内容は固定ではなくプログラムが生成します。

検討したものは以下の通りです。

  1. WebView
    以前のバージョンで使用しました。ベースのHTMLを作成して、動的に変更したい箇所の文字列を置換してUIWebViewに与えるというものです。正しく動作しましたが、iOS-Chartsなどのライブラリを使ってみたいため今回はUIKitなどiOSの機能で作れる方法を探しています。以前はJavaScriptのライブラリでグラフなどは描画していました。

  2. オートレイアウト
    UIScrollViewを貼り、その中にUITextFieldなどを配置し、オートレイアウトで位置を決めていきます。できることはできるでしょうが、ものすごく大変な気がします。また柔軟性もないと思います。たとえばグラフのところに棒グラフを貼っていて、さらに円グラフも追加しようと思ったらまたレイアウトのやり直しになります。

  3. UIStackView
    オートレイアウトよりは手間は少ないと思いますが、調査中です。

  4. UITextViewにaddSubViewする
    固定テキストの属性をstoryboardで決められるので良さそうですが、サブビューの位置を決めてやる必要があるのでレイアウトの手間はかかります。

期待するものは、たとえばですが

reportView.addSection("基本情報")
reportView.addItem("ユーザ名:\(userName)"
reportView.addItem("日時:\(date)"
...

reportView.addSection("グラフ")
let barChartView = BarChartView( ... )
barChartView.data = ....
reportView.addView(barChartView)

reportView.addSection("詳細結果")
reportView.addView(detailedView)

のように足していくと実行した順に末尾に追加され、適切にレイアウトされるものです。これはイメージなので必ずしもこの通りでなくても構いません。必要な項目をビューに順次教えてやるとレポート(文書)ができあがると助かります。HTMLやLaTeXのようなマークアップ言語が適している分野です。またデザインセンスもないので、見出しの大きさなども自分で細かく調整するのではなくフレームワーク側できれいに作成されると見栄えがよくなると思います。

このような需要を満たす標準あるいは外部のフレームワークやライブラリがあれば教えてくださると幸いです。レポートを表示するというのは比較的ありふれている機能だと思いますが、日本語と英語で色々調べても見つけることができませんでした。

よろしくお願いします。