【问题标题】:Display UITableViewController in UIPopoverController with variable width在 UIPopoverController 中以可变宽度显示 UITableViewController
【发布时间】:2013-01-30 22:21:22
【问题描述】:

我将使用 UIPopoverController 来显示 UITableViewController。表格视图将显示长度未知的名称列表(可能是 Bob 或可能是 Alexander)。

我知道如何改变弹出框的高度,但我似乎不知道如何改变它的宽度,因此名称不会被截断。

需要确定名称的宽度,以便我可以将弹出框设置为该宽度,这样名称就不会从弹出框中溢出:

有什么想法吗?

【问题讨论】:

    标签: ios objective-c uitableview uipopovercontroller


    【解决方案1】:

    获取字符串的宽度,然后将 UITable 设置为该宽度。这是您可以添加以获取宽度的方法。您可以将其添加到类别或您的班级。我从here获取代码。

    - (CGFloat)widthOfString:(NSString *)string withFont:(NSFont *)font {
         NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil];
         return [[[NSAttributedString alloc] initWithString:string attributes:attributes] size].width;
     }
    

    通过这种方式,您可以指定您正在使用的字体,以防您将来最终更改它。 (不同的字体显然会导致不同的宽度)。

    【讨论】:

      【解决方案2】:

      大概你有任何名称数组。您要做的是枚举名称列表,确定每个名称所需的长度,然后存储最大的名称并将其应用为所需的宽度。您将需要定义一个不应超过的“最大尺寸”。沿着这些思路的方法应该返回合适的东西:

      - (CGFloat)suitableWidthForLabel:(UILabel *)nameLabel withNames:(NSArray *)arrayOfNames
      {
      
          CGFloat suitableWidth = 100.0f; // A reasonable starting point
          CGSize maximumSize = CGSizeMake(600.0f, nameLabel.frame.size.height);
          UIFont *labelFont = [nameLabel font];
      
          for (NSString *aName in arrayOfNames)
          {
      
              CGSize expectedLabelSize = [aName sizeWithFont:labelFont
                                              constrainedToSize:maximumSize
                                                  lineBreakMode:nameLabel.lineBreakMode];
      
              suitableWidth = MAX(suitableWidth, expectedLabelSize.width);
          }
      
          return suitableWidth; // This will be the largest size you may need to accommodate
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 1970-01-01
        • 2013-09-28
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        相关资源
        最近更新 更多