【问题标题】:How to make Autoresize property work in Xcode 4.3?如何使 Autoresize 属性在 Xcode 4.3 中工作?
【发布时间】:2012-03-09 19:03:33
【问题描述】:

我最近更新到 Xcode 4.3,它禁用了我的 UILabel 的 autoshrink 属性。我重新检查了 IB 中的框并重建了项目,但它仍然切断了文本。有什么建议?这是一个已知的错误?有没有办法以编程方式解决这个问题。

【问题讨论】:

  • 您是否尝试过以编程方式设置UILabelautoresizingMask
  • autoresizingMask 不起作用。
  • adjustsFontSizeToFitWidth 在 XIB 中被选中,但是当应用程序运行时它被忽略。是 Xcode 4.3 导致了这个问题。太有问题了。
  • 同意,这是超级越野车。 IB 不会保持一致...如果我选中该框,它会取消选中它,反之亦然...

标签: iphone xcode cocoa uilabel


【解决方案1】:

我看到了同样的事情。您可以通过编程方式解决它(我在 viewDidLoad 中完成):

myLabel.adjustsFontSizeToFitWidth = YES;

【讨论】:

  • 成功了!!虽然我使用了[myLabel setAdjustsFontSizeToFitWidth:YES];,因为我认为苹果希望我们“设置”这样的属性。
  • 我也遇到了同样的问题,之前提交过雷达 (openradar.appspot.com/10984259)。这个问题似乎已在 XCode 4.3.1 中修复。
【解决方案2】:

我遇到了同样的问题。这是修复,我将它添加到实用程序方法中,因为我的项目中有 100 多个 xib,其中有很多需要修复。效果很好。

将此添加到 Utility.m:

// UIView+viewRecursion.h
@interface UIView (viewRecursion)
- (NSMutableArray*) allSubViews;
@end
// UIView+viewRecursion.m
@implementation UIView (viewRecursion)
- (NSMutableArray*)allSubViews
{
    NSMutableArray *arr=[[NSMutableArray alloc] init];
    [arr addObject:self];
    for (UIView *subview in self.subviews)
    {
        [arr addObjectsFromArray:(NSArray*)[subview allSubViews]];
    }
    return arr;
}
@end

还有这个:

  +(void)fixLabels:(UIView *)theView{

    for(UIView *v in [theView allSubViews])
    {
        if([v isKindOfClass:[UILabel class]])
        {
            if( !((UILabel*)v).adjustsFontSizeToFitWidth ){
                ((UILabel*)v).adjustsFontSizeToFitWidth=YES;
                //  NSLog(@"fixed %@", theView);
            }
        }
    }
}

然后从 viewDidLoad 调用 fixLabels 以获取任何具有未自动收缩的 UILabel 的视图:

[Utility fixLabels:self.view];

【讨论】:

    【解决方案3】:

    我有完全相反的问题!我更新到 Xcode 4.3,现在当我希望它们用省略号截断它们时,它会自动缩小我的 tableview 单元格中的文本。我浏览了故事板并修改了所有可能与此有关的选项,但它拒绝做我想做的事。好郁闷。

    已编辑...

    尝试重新创建 Xcode 对我所做的事情,因为这与发生在您身上的事情相反。在情节提要中突出显示您的表格视图的原型单元格,然后单击“标题”和“副标题”字样。您可以在属性检查器中找到 AutoShrinking 属性,我想您可以通过取消选中此框并重建您的应用程序来解决您的问题。很奇怪 Xcode 升级会如何导致这种情况。它还导致我的应用程序表现得有些奇怪(即在模拟器中运行时意外崩溃),但一些清理和重建解决了这个问题。希望你能解决这个问题,因为我知道这对我来说同样令人沮丧!

    【讨论】:

    • 哎呀,我想我解决了自己的问题。我必须在 Xcode 中实际打开 Autoshrinking 并将最小尺寸设置为我的文本大小。这真是太愚蠢了。
    • 呃,Xcode 4.3 的错误并没有为我解决。每次我构建它时都会取消选择自动调整大小功能,如果我对其进行硬编码,它会忽略它......很高兴你的工作正常!
    【解决方案4】:

    它只是对我做了同样的事情。所有的自动收缩都关闭了。放回字体大小并打开自动缩小实际上不起作用。

    我必须按照 JLundell 的建议以编程方式修复它。

    【讨论】:

      【解决方案5】:

      Xcode 4.3 不遵守 AdjustsFontSizeToFitWidth 属性的 Interface Builder 设置。

      您可以按照 JLundell 的建议以编程方式设置属性值来修复它。

      myLabel.adjustsFontSizeToFitWidth = YES;
      

      已在 4.3.1 中修复

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-10
        • 1970-01-01
        • 2012-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        • 1970-01-01
        相关资源
        最近更新 更多