-sizeToFit
自動レイアウトを使用している場合は呼び出さないでください。それは「古い」システムの一部です。
IB が明示的な高さを制約に挿入したようです (ラベルの横の縦棒がこれを示しています)。これらをクリアするには、ラベルを選択して Cmd+= を押してみてください。
複数行のラベルの場合、ビューの回転/サイズ変更時にすべてが正しく機能するように、View Controller で次のことも行う必要があります。
- (void)updateLabelPreferredMaxLayoutWidthToCurrentWidth:(UILabel *)label
{
label.preferredMaxLayoutWidth =
[label alignmentRectForFrame:label.frame].size.width;
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self updateLabelPreferredMaxLayoutWidthToCurrentWidth:self.label1];
[self updateLabelPreferredMaxLayoutWidthToCurrentWidth:self.label2];
[self updateLabelPreferredMaxLayoutWidthToCurrentWidth:self.label3];
[self.view layoutSubviews];
}
複数行のラベルは、自動レイアウトの弱点の 1 つを明らかにします。ラベルを強制的にリフローさせて高さを調整するために更新preferredMaxLayoutWidth
する必要があります。そうしないと、ビューのサイズが変更/回転された場合、自動レイアウトはラベルをリフローしてサイズを変更する必要があることを認識しません。