0

テーブルビューにプログラムで UITextView を追加しました。縦向きモードと横向きモードで同じように見えるように、制約を追加したいと思います。次のコード (C#、MonoTouch) がありますが、機能しません。titleTxt は、セルに追加される単純なテキスト フィールドです。

var rightSpaceConstraint = NSLayoutConstraint.Create (titleTxt, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, null, NSLayoutAttribute.Right, 1.0f, 20f);
var leftSpaceConstraint = NSLayoutConstraint.Create (titleTxt, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, null, NSLayoutAttribute.Left, 1.0f, 20f);

titleTxt.AddConstraints (new NSLayoutConstraint[] {rightSpaceConstraint, leftSpaceConstraint});

左右のスペースを設定するには、どのように制約を追加すればよいですか。

4

1 に答える 1

1

titleTxt に制約を追加するのではなく、テーブル セルに制約を追加する必要があります。また、TranslatesAutoresizingMaskIntoConstraints フラグを false に設定する必要があります。以下は正常に動作するコードです

        UILabel titleLbl = new UILabel ();
        titleLbl.Frame = new RectangleF (20,5,260,30);
        titleLbl.Text = "Please enter username";
        titleLbl.BackgroundColor = UIColor.Clear;
        titleLbl.Font = UIFont.SystemFontOfSize (13);
        titleLbl.TextAlignment = UITextAlignment.Center;

        titleLbl.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
        titleLbl.TranslatesAutoresizingMaskIntoConstraints = false;

        cell.ContentView.AddSubview (titleLbl);

        var titleLblRightSpaceConstraint = NSLayoutConstraint.Create (titleLbl, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, cell.ContentView, NSLayoutAttribute.Right, 1.0f, -20f);
        var titleLblLeftSpaceConstraint = NSLayoutConstraint.Create (titleLbl, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, cell.ContentView, NSLayoutAttribute.Left, 1.0f, 0f);

        cell.ContentView.AddConstraints (new NSLayoutConstraint[] {titleLblRightSpaceConstraint, titleLblLeftSpaceConstraint });
于 2013-10-10T20:47:25.500 に答える