2022年5月14日土曜日

YogaKitSample を利用して、YogaDocsを調査

yogalayout docs

Absolute/Relative Layout

要素の位置の種類は、その要素が親要素の中でどのように配置されるかを定義します。
RELATIVE(DEFAULT) デフォルトでは、要素は相対的に配置されます。
つまり、要素はレイアウトの通常の流れに従って配置され、top、right、bottom、leftの値に基づいて、その位置から相対的にオフセットされます。
このオフセットは、兄弟や親要素の位置には影響しない。
ABSOLUTE 絶対位置の場合、要素は通常のレイアウトフローに参加しない。
代わりに兄弟要素から独立してレイアウトされる。
位置はtop, right, bottom, leftの値に基づいて決定される。

Flex Direction

Flex 方向は、ノードの子ノードがレイアウトされる方向を制御します。
これは、主軸とも呼ばれます。主軸は、子ノードがレイアウトされる方向です。
十字軸は、主軸に垂直な軸、つまり折り返し線がレイアウトされる軸を指します。

ROW (DEFAULT) 子を左から右へ並べます。折り返しが有効な場合、次の行はコンテナの左側の最初の項目の下から始まる。

COLUMN 上から下へ並べる。折り返しが有効な場合、次の行は、コンテナの左上の最初の項目から開始される。

ROW REVERSE 子要素を右から左へ並べる。折り返しが有効な場合、次の行はコンテナの右側の最初の項目の下から始まる。

COLUMN REVERSE 子要素を下から上へ並べる。折り返しが有効な場合、次の行はコンテナの底にある最初の項目の左側から始まる。

Align Self

align selfはalign itemsと同じオプションと効果を持ちますが、
コンテナ内の子に影響を与えるのではなく、
このプロパティを1つの子に適用して、その親内での配置を変更することができます。

Width and Height

Yogaのwidthプロパティは、要素の内容領域の幅を指定します。同様に height プロパティは、要素のコンテンツ領域の高さを指定します。
widthとheightはどちらも以下の値をとります。
AUTO デフォルト値で、他の子要素、テキスト、画像など、要素のコンテンツに基づいて幅と高さを計算します。
PIXELS 絶対ピクセルで幅/高さを定義します。YOGA ノードに設定された他のプロパティによって、これがノードの最終的な寸法になることも、ならないこともあります。
PERCENTAGE 親の幅と高さに対する割合で、幅と高さを定義します。

FLEX GROW

コンテナ内のスペースが、主軸に沿ってどのように子に分配されるべきかを説明します。
コンテナは、その子をレイアウトした後、その子によって指定されたフレックスグロウ値に従って、残りのスペースを分配します。
Flex grow は、任意の浮動小数点値 >= 0 を受け入れ、0 がデフォルト値です。
コンテナは、その子のフレックス・グロウ値によって重み付けされた残りのスペースを、その子の間に分配します。
FLEX GROW は、コンテナ内のスペースが、主軸に沿ってどのようにその子たちに分配されるべきかを説明します。コンテナは、その子をレイアウトした
後、その子によって指定されたフレックスグロウ値に従って、残りのスペースを分配します。

Justify Content

Justifyコンテンツは、コンテナの主軸内に子要素を配置する方法を記述します。例えば、このプロパティを使用して、フレックス方向を行に設定したコンテナ内で子を水平に、またはフレックス方向を列に設定したコンテナ内で子を垂直にセンタリングすることができます。

FLEX START(DEFAULT) コンテナの子を、コンテナの主軸の始点に揃える。

FLEX END コンテナの子要素をコンテナの主軸の終点に揃える。

CENTER コンテナの子をコンテナの主軸の中心に並べる。

SPACE BETWEEN コンテナの主軸を横切る子のスペースを均等にし、子同士の残りのスペースを分散させる。

SPACE AROUND コンテナの主軸を横切る子供のスペースを均等にし、子供の周りに残りのスペースを配分します。スペースアラウンドを使用すると、スペースが最初の子の先頭と最後の子の末尾に分散されます。

SPACE EVENLY アライメントコンテナの中で、主軸に沿って均等に配置される。隣接するアイテムの各ペア、メイン開始端と最初のアイテム、メイン終了端と最後のアイテムの間隔は、すべて正確に同じになる。

2022年5月5日木曜日

gitメモ

zshでgitを快適に使いやすくするためのターミナル設定(zsh編)

あなたはmerge派?rebase派?綺麗なGitログで実感したメリット

指定したコミットやログ履歴を参照する方法

Gitのコミットメッセージを後から変更する方法をわかりやすく書いてみた


コミットの流れを一覧で確認

git log --oneline --graph


Push

git push -u origin [リモートへ上げたいローカルブランチ名]


複数のコミットを1つにまとめる

git rebase -i HEAD~[まとめる数]

例) 3つのコミットを1つにまとめる

git rebase -i HEAD~3

1つ目以外をpick から fixupに変更する

コミットメッセージを修正

git commit --amend -m "メッセージ"

rebaseの取り消し

git rebase --abort


gitでaddとcommitを同時に実行する

git commit -am "comment"


2022年5月3日火曜日

Xcode13からRXSwiftをCarthageで入れる

  • XCode 13.2.1
  • MacOS Bigsur 11.6.3
  • carthage 0.38.0

carthage コマンドを実行するまでの初期導入の準備が終わったら

以下のコマンドを実行します。(完了までに少し時間がかかります)

carthage update --use-xcframeworks --platform iOS

完了し成功すると、RxSwift等のxcframeworkが出来上がります


続いて、XcodeのTARGETS内の[アプリ名]を選択

上部のGeneralを選択

General内のFramworks, Libraries, and Embedded Contentを選択

+ボタンをタップし、Add Other > Add Filesを選択

先程、作成されたxcframeworkを選択

これで、RxSwiftをコード内で使用しビルドを行う事が出来ました


しかし、エミュレーターからの実行時に以下のようなエラーが出ました

Library not loaded: @rpath/libXCTestSwiftSupport.dylib


これを解消する為には

XcodeのTARGETS内の[アプリ名]を選択

上部のGeneralを選択

General内のFramworks, Libraries, and Embedded Contentを選択

RxBlockingとRxTestのフレームワークを消す


これで実行時のエラーも無くなりました


参考サイト

XCFrameworksに対応したCarthageを使ってみた

[iOS][Xcode] error: Building for iOS Simulator, but the linked framework ‘Hoge.framework’ was built for iOS.というエラーが出たときの対処法

【RxSwift】RxBlockingとRxTestはテストのフレームワークだからCarthage入れる時は注意しよう!