0

私は Xcode (最新バージョン) で iOS6 ビルドに取り組んでいますが、Interface Builder では、今のところほんの数個のラベルを持つカスタム セルを作成しています。左側の削除記号と右側の「セル行の並べ替え」記号で覆われるのではなく、ラベルを「インデント」したいと考えています。IB で、編集中にインデントするというチェックボックスがオンになっていることに気付きましたが、これも 10 に設定されていますが、何らかの理由でまだ機能しませんか? 「コンテンツ ビュー」もキャンバスにドラッグする必要がありますか? 私はそれが箱から出してそこにあると思った。また、IBでもオプションですが、セルの高さを変更することはできません。これは、新しいオート レイアウト システムのおかげでしょうか。セルを作成するときに他のすべてのセルの色をわずかに変更しているため、セルの背景があることはわかっています。

私は周りを検索しましたが、誰もが「インデントを止める方法」を尋ねています。

何かご意見は?

4

2 に答える 2

0

自動レイアウトを使用する場合、セルのインデントはそのままでは機能しません。この質問を参照してください。

于 2013-02-13T23:49:50.747 に答える
0

問題は AutoLayout のバグのようです。システムによって生成された左の水平方向の制約は、セルのcontentView. これは、XCode 5 で修正されている可能性があります。

AutoLayout をオフにすることが解決策だと多くの人が言っているようですが、そうすると、1 つのカスタム セルのインデントを修正するだけで、AutoLayout のすべての利点が失われます。これは、実際には 4 行のコード (および 2 つIBOutletの で、そのうちの 1 つは既にお持ちかもしれません) で非常に簡単に修正できます。

  1. IBOutletラベルと左の水平制約の両方に対して、Interface Builder のそれぞれからサブクラスのヘッダー ファイルに CTRL キーを押しながらドラッグし、 " " と " " をUITableViewCell呼び出して作成します (以下のコードに一致させるか、独自の名前と名前を使用します)。コードを変更します。labelleftHorizontalConstraint

  2. サブクラスのUITableViewCellオーバーライドawakeFromNibにこのコードを追加します。


   // Remove the constraint that you can't delete in IB (XCode 4)
   [self removeConstraint:self.leftHorizontalConstraint];

   //Create a dictionary of variable name bindings
   NSDictionary *labelDict = NSDictionaryOfVariableBindings(_label);

   //Create a horizontal constraint for the label, 20 points from the left edge of its container
   NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-20-[_label]" options:0 metrics:nil views:labelDict];

   //Add the constraint to the containerView
   [self.contentView addConstraints:constraints];

もちろん、最初に IB がラベルと containerView の間の制約を生成すると、はるかに簡単になります。これは XCode 5 で修正される可能性がありますが、テストしていません。IB ではシステム生成の制約を削除できるようになったため、少なくとも XCode 5 を使用して手動で制約を削除できるはずです。

于 2013-07-10T10:54:07.270 に答える