我一直在关注以下几个Q / A:例如this和this other一个。
然而我无法更改UILabel的宽度。
这是我的代码:
- (void)configureView {
// Update the user interface for the detail item.
if (self.detailItem) {
Data *detailData = (Data*)self.detailItem;
NSString * priceString = [NSString stringWithFormat:@"%@ %.2f", detailData.priceCurrency, detailData.priceAmount.floatValue ];
CGSize size = [priceString sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];
CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
_price.frame = CGRectMake(_price.frame.origin.x, _price.frame.origin.y, 300, adjustedSize.height);
// I Tried this one as well..
//_price.frame = CGRectMake(_price.frame.origin.x, _price.frame.origin.y, adjustedSize.width, adjustedSize.height);
_price.text = priceString;
// and this one
// [_price sizeToFit];
// And this one
[_price setFrame:CGRectMake(_price.frame.origin.x,_price.frame.origin.y,adjustedSize.width,adjustedSize.height)];
[_price setText:priceString];
// as well as hardocding the width to 300
// [_price setFrame:CGRectMake(_price.frame.origin.x,_price.frame.origin.y,300,adjustedSize.height)];
}
}
不幸的是,以上都没有改变宽度UILabel。
这是我在界面构建器中设置的方式,这里有什么问题吗? 原始宽度为40 所以通过将其硬编码为300我希望它能够改变。
视图是 DetailView ,当用户点击cel时,可以从MasterViewController访问该视图。这是我用来调用上面描述的configureView方法的DetailViewController上的代码。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self configureView];
}
对于我可能遗失的内容有任何想法?
这是我初始化我的网点的方式:
// DetailViewController.m
@interface DetailViewController ()
@end
@implementation DetailViewController
@synthesize price = _price;
好处是文本内容在那里,所以出口参考不是零。
然而,这就是UILabel的出现方式:
编辑:
我试图删除约束但似乎仍然无效。
这是现在的代码:
_price.frame = CGRectMake(_price.frame.origin.x, _price.frame.origin.y, 300, 200);
_price.text = @"bdadadsdsdsdsDsds";
答案 0 :(得分:0)
viewDidLayoutSubviews
是在UI实际出现在屏幕上之前修改用户界面的最佳位置。尝试将代码移至viewDidLayoutSubviews
。
希望这有帮助