我用Xcode6 beta6打开了一个现有的iOS项目,Xcode列出了以下对Storyboard和Xib文件的警告:
自动首选最大布局宽度在iOS版本中不可用 8.0以前版本
我尝试通过设置宽度来解决警告,如下所示:
然而,这并没有消除警告。如何去除?
我用Xcode6 beta6打开了一个现有的iOS项目,Xcode列出了以下对Storyboard和Xib文件的警告:
自动首选最大布局宽度在iOS版本中不可用 8.0以前版本
我尝试通过设置宽度来解决警告,如下所示:
然而,这并没有消除警告。如何去除?
当前回答
我通过选择W / H选项中的原始布局来让它工作。故事板正在正常工作,错误已经消失。
还要确保你开发的是iOS 8.0。从项目的一般设置中检查。
这就是你应该按的地方。
其他回答
我有这个问题,并能够通过添加约束来确定标签的最大值来修复它。
当删除多行标签时,没有约束设置来强制父视图内的宽度。这就是新的PreferredMaxWidth开始发挥作用的地方。在iOS 7和更早的版本上,你必须自己定义最大宽度。我只是在标签的左右两侧添加了一个10px的约束。
您还可以添加<= width约束,这也可以解决这个问题。
所以这实际上不是一个bug,你只需要自己定义最大宽度。在其他答案中提到的显式选项也可以工作,因为你正在设置这个宽度值,但是如果你想要根据父宽度改变最大宽度,你必须修改这个值(因为你已经显式地设置了宽度)。
我上面的解决方案确保了无论父视图有多大,宽度总是保持不变。
总而言之,对于我来说,按照上面的两条指令来更改numberOfLines = 0为1或更大的任何实例,并手动将preferredmaxlayoutidth ="0"添加到故事板源代码中的每个标签实例中,可以修复我的所有警告。
出于某种原因,即使将iOS部署目标更改为8.0或更高版本,Xib文件也不会采用该更改,并在文件检查器中保持先前的设置
因此,您应该为每个Xib手动更改它
一旦完成,警告将消失:-)
解决方法很简单
只需要启用iOS 8及更高版本的构建即可
现在我的Xcode版本是6.1。但我也收到了警告。这让我很恼火。经过一遍又一遍的搜索。我找到了解决办法。
原因:你必须在你的故事板中设置你的UILabel Lines > 1。
解决方案:在Storyboard中将UILabel Lines属性设置为1。重启Xcode。这对我有用,希望它能帮助更多的人。
如果你确实需要显示你的单词超过一行。你应该在代码里写。
//the words will show in UILabel
NSString *testString = @"Today I wanna set the line to multiple lines. bla bla ...... Today I wanna set the line to multiple lines. bla bla ......"
[self.UserNameLabel setNumberOfLines:0];
self.UserNameLabel.lineBreakMode = NSLineBreakByWordWrapping;
UIFont *font = [UIFont systemFontOfSize:12];
//Here I set the Label max width to 200, height to 60
CGSize size = CGSizeMake(200, 60);
CGRect labelRect = [testString boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName] context:nil];
self.UserNameLabel.frame = CGRectMake(self.UserNameLabel.frame.origin.x, self.UserNameLabel.frame.origin.y, labelRect.size.width, labelRect.size.height);
self.UserNameLabel.text = testString;