210416 Fri

6563 ワード

問題/難点→解決策


課題content layout、frame layoutを適用してスクロールビューを正常に動作させる
Content Layout Guideとは?
  • コンテンツLayoutガイドスクロールビュー内のスクロール可能コンテンツ領域
  • について
  • AutoLayoutがスクロール可能なコンテンツ領域の幅と高さを計算できるように、十分な制約を設定する必要があります.
    Frame Layout Guideとは?

  • Frame Layoutガイドは、スクロールビューを配置するスーパービューに比例する場合、スクロールビュー自体の位置(x、y軸)と寸法(幅、高さ)について

  • 開発した「完全」チュートリアルに従って、「Content Layout Guide」でスクロールビューのスペースを上下左右に調整します.

  • Frame Layout GuideはWidthのみを調整しViewと同じ

  • 結果はね.まだだめだどうしてだめなの?🤔

  • スクロールビューは実現したがcontent layout,frame layoutは適用されなかった😢

  • Takでは、コンテンツレイアウト、フレームレイアウトを使用するよりも、各ラベルに自動レイアウトを適用してスクロールビューを実現します.

  • Superviewのconstantを0に設定し、サイズを上下20に調整し、左下隅がいっぱいであることを示します.

  • 上のラベルにもbottomにコンストレイントを適用し、下のラベルにも上のラベルにコンストレイントを設定すると、この2つは同じ位置について衝突します.
  • →でももう一度見ると両方当てはまるけど衝突はない・・・なんだよ.🤔
    参考資料
    Kioは卒業生向けiPhoneアプリケーション開発自動レイアウトスクロールビュー基礎チュートリアル(2020)-ios autolayout scrollviewを提供しています
    課題フォーマットで出力
    前の場所:こんな
  • 改訂前コード
    do {
                exposition = try jsonDecoder.decode(ExpoItem.self, from: dataAsset.data)
                expoTitleLabel.text = String(exposition.expoTitle)
                numberOfVisitorsLabel.text = String(exposition.numberOfVisitors)
                locationLabel.text = String(exposition.location)
                openingPeriodLabel.text = String(exposition.openingPeriod)
                descriptionLabel.text = String(exposition.description)
            } catch {
                print(error.localizedDescription)
            }
  • 修正後のコード

  • 考えてみると、jsonデータ値もstringなのでstringに変換する必要はないので、すべて削除しました.

  • 番号はどうせこのように「string」に入るので、別途変換する必要はありません.

  • Coryに直接ラベルに価格を書いてもいいですか?

  • それとももう一つを関数として入れたほうがいいですか?私は彼に聞いたが,彼はどんな方法を取っても構わないと言った.
  • do {
                exposition = try jsonDecoder.decode(ExpoItem.self, from: dataAsset.data)
                expoTitleLabel.text = exposition.expoTitle
                numberOfVisitorsLabel.text = "방문객 : \(exposition.numberOfVisitors) 명"
                locationLabel.text = "개최지 : " + exposition.location
                openingPeriodLabel.text = "개최 기간 : " + exposition.openingPeriod
                descriptionLabel.text = exposition.description
            } catch {
                print(error.localizedDescription)
            } 
    まちがったところ
    sukemコードを表示します.do catch構文では、以下に示すように、doは復号のみです.
    ラベルに適したテキストを外に置いて作ったからです.
    私もやってみましたが、だめです.
    Error message: Variable 'exposition' used before being initialized (??) 🤔
    これは後で見よう
    (だから私はまずdo構文で実行します)

    ソリューション
    CoryにPR問い合わせを送る
    露出変数はviewDidLoadから削除できます^.^