私は はばかげているUILabel
のフレームを、修正するために二日間しようとしている... UILabel
はIBOutletであるが、それはそれは働いていない理由 ではありません。私はプログラム的にUILabel
を作成しようとしましたし、 まだ動作しませんでした。ここで私はそれを行う方法です。私のUILabelのフレームを変更できないのはなぜですか?
self.descriptionLabel.text = description;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize textSize = [self.descriptionLabel.text sizeWithFont:[UIFont systemFontOfSize:12.0]
constrainedToSize:CGSizeMake(self.descriptionLabel.frame.size.width, FLT_MAX)
lineBreakMode:self.descriptionLabel.lineBreakMode];
CGFloat frameHeight = textSize.height;
CGRect frame = self.descriptionLabel.frame;
frame.size.height = frameHeight;
self.descriptionLabel.frame = frame;
CGRect bounds = self.descriptionLabel.frame;
bounds.origin.x = self.descriptionLabel.frame.origin.x + 10.0;
bounds.size.width = self.descriptionLabel.frame.size.width - 20.0;
self.descriptionLabel.bounds = bounds;
self.descriptionLabel.numberOfLines = 0;
私はすでにIRCに尋ね、彼らは私もフレームを作成しようとしました... フレームを変更することはないだろうない理由がないことを
を教えてくれましたCGRectMake
とそれに任意の 値を与えるが、どちらかのトリックをしなかった..
誰かが問題を抱えているかもしれないことを知っていますか?
編集1:私は前と後のフレームを記録し、私は奇妙な結果だ:私はフレームを設定した後
Before: 0.000000 0.000000 0.000000 0.000000
After: 0.000000 0.000000 0.000000 33525.000000
高さが理にかなっている唯一の値である(私はたくさんあります目的のラベルのテキスト)。
編集2:次のようにコードを変更しました。ログには、フレーム が変更されていますが、シミュレータ上では変更されませんでした。私は、UILabel
のレイヤーに赤い矢印 を追加することでそれを証明しました。
self.descriptionLabel.text = description;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize textSize = [self.descriptionLabel.text sizeWithFont:[UIFont systemFontOfSize:12.0]
constrainedToSize:CGSizeMake(self.view.frame.size.width, FLT_MAX)
lineBreakMode:self.descriptionLabel.lineBreakMode];
CGFloat frameHeight = textSize.height;
CGRect frame = CGRectMake(0.0, 300.0, self.view.frame.size.width, frameHeight);
self.descriptionLabel.frame = frame;
DDLogInfo(@"After: %f %f %f %f", self.descriptionLabel.frame.origin.x, self.descriptionLabel.frame.origin.y, self.descriptionLabel.frame.size.width, self.descriptionLabel.frame.size.height);
// After: 0.000000 300.000000 320.000000 585.000000
self.descriptionLabel.numberOfLines = 0;
self.descriptionLabel.layer.borderColor = [UIColor redColor].CGColor;
self.descriptionLabel.layer.borderWidth = 2;
前後にフレームを記録しましたか?そして、なぜあなたは境界を変更していますか(特に、異なる座標空間にあるフレームを使用して)? – Wain
あなたが提案したように前後にフレームを記録しました。私が編集した質問に含まれる奇妙な結果が得られました。 –
なぜ最後の行数を0に設定していますか? – Abizern