ラベルのサイズを変更する方法に関するリンクは多数ありますが、ラベルのサイズに応じて UIButton のサイズを変更する方法に関する情報が不足しています。現在、自動レイアウト (すべてのシステム制約が IB から追加されます) で設定された画面ビューがあり、すべて正常に動作しますが、画面の下部に動的コンテンツを追加する必要があります。ランダムな長さのタイトルを持つランダムな数のボタンを作成して追加する必要があります。したがって、ボタンを作成して追加するためのコードフラグメントは次のとおりです。
// Loop
UIButton *myButton = [UIButton new];
UIButton.frame = CGRectMake(0, previousButtonOriginY, self.view.bounds.size.width, 20);
myButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
myButton.titleLabel.textAlignment = NSTextAlignmentLeft;
myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[myButton setTitle:@"very long title..." forState:UIControlStateNormal];
myButton.titleLabel.numberOfLines = 0;
[self.footerView addSubview:myButton];
問題は、ボタンのフレームの高さが 20px のままですが、ラベル文字列が 3 行で表示されるため、他のボタン タイトルと重なってしまうことです。[myButton sizeToFit] を追加すると、すべてのテキストが 1 行に収まるようにボタンの幅が変更され、タイトルが画面からはみ出します。
[myButton sizeThatFits:CGSizeMake(320, 100)] を追加すると、サイズ変更がまったく機能しません。sizeToFit は自動レイアウトの一部ではないため、まったく呼び出すべきではないことはわかっていますが、ボタンをラベルを画面の 320 幅に合わせる方法を簡単に提案する必要があります。
コードからシステム制約を追加する必要があると感じていますが、それを行ったことがないため、どのように見えるかわかりません。この単純なことを機能させるには、おそらくコードから大量の制約を追加する必要があります:)