どうすればこれを達成できるのか、私は困惑しています。iOS 6 の新機能であるコンテナ セルと自動レイアウトはおそらく役立つはずですが、私がこれを目にしたアプリケーションはかなり古く、それらの新機能なしでそれを実装していました。私が達成したいのは、添付した画像のように、ラベル、テキストフィールド、そして次の行に折り返すのに十分な長さのテキストを持つ別のラベルです。これを達成するために考えられる方法は、2 行のラベルを付けて、たとえばアンダースコア文字を繰り返し配置してから、アンダースコアの開始位置と終了位置を何らかの方法で測定し、その領域のテキスト フィールドをオーバーレイすることです。しかし、これは難しく、かなり面倒に思えます。どうすればそれを達成できますか?
2 に答える
これは最善の解決策ではありません。
しかし、これは autolayout の助けを借りて簡単に達成できると思います。
最初にカスタム セルの右側にラベルを付け、その右側に textField を配置し、その右側に再びラベルを付けます。
ラベル --> テキストフィールド --> ラベル
ここで、最初のラベルには textField (How) の前の単語を入力し、残りの部分を入力する必要があります。
そして、最初と最後のラベルでテキストフィールドの相対位置を設定します。最初のラベルのコンテンツがはるかに大きい場合、右側に移動します
実際、あなたのアンダースコアのアイデアはまったく悪いものではなく、あなたが思っているほど難しいものではないと思います。
これを行うには、おそらくよりクリーンな (おそらく遅い) 方法がありますが、頭に浮かぶ最も簡単な方法は、文字列を次のようにコンポーネントに分割するために使用できる区切り文字を文字列に設定することです。
なぜ __________^ 今朝仕事に遅れたの?
ここから[[myString componentsSeparatedByString:@"^"] objectAtIndex:1];
、アンダースコアが表示されます。
次のステップは、このようにサイズを取得することです[underscoreString sizeWithFont:[UIFont fontWithName:@"<your font>" size:<your size>]];
これで、UITextField をオーバーレイするために使用できるアンダースコア文字列のサイズがわかりました。underscoreString の区切り文字の幅を考慮して、それらを追加するか、それに応じて UITextField の幅を調整してください。ここで考慮すべき点が他にもあることに注意してください (たとえば、アンダースコア文字列の単語が折り返されるとどうなるか)。