【问题标题】:Is there a way to auto-size a UIImageView in Interface Builder/storyboard?有没有办法在 Interface Builder/storyboard 中自动调整 UIImageView 的大小?
【发布时间】:2012-08-15 09:21:33
【问题描述】:

当你在storyboard或interface builder中为一个uiimageview设置图片时,它会保留原来UIImageView的形状,这意味着图片本身是完全扭曲的。

为了使UIImageView 的大小与其图像相匹配,我必须从文件检查器中手动输入大小。

有没有办法让UIImageView 自动检测其图像的原生大小并相应地调整自身大小?

【问题讨论】:

    标签: objective-c xcode uiimageview


    【解决方案1】:

    我假设您指的是故事板/IB 中的布局。要获得图像的原始尺寸,只需选择图像并按键盘上的 Command + =。按比例重新调整大小选择角并在调整大小时按住 shift 键。

    【讨论】:

    • 很棒的捷径!有没有办法将图像设置为原始大小的一半(对于@2x 视网膜图像)?
    • 你不需要考虑视网膜分辨率,除非你正在做一些不寻常的事情。 iOS 将自动替换为正确大小的@2x 图像。只需使用 IB 中的非视网膜图像即可。
    • Command + = 可以解决问题。菜单命令是Editor -> Size to Fit Content
    • 在菜单选项可用之前,您可能需要再次单击 UIImageView(使其突出显示)。
    【解决方案2】:

    为什么不在代码中设置 uiimageview 的大小? 这是您需要做的...

    //get the Image
    UIImage *img = [UIImage imageNamed:@"img.png"];
    
    CGFloat x = img.origin.x;
    CGFloat y = img.origin.y;
    CGFloat width = img.size.width;
    CGFloat height = img.size.height;
    imageView.frame = CGRectMake(x, y, width, height);  //imageView is your uiimageview's reference
    

    【讨论】:

    • 有没有办法通过Storyboard/IB接口做到这一点?
    • 不确定,因为我现在没有我的 mac。我不认为你可以在 IB/Storyboard 中更改大小。因为直到调用 viewDidLoad 方法才真正完成与 outlet 的连接,所以如果您在调用此方法之前尝试访问 imageview,您仍然会看到 nil。
    【解决方案3】:

    使用内容模式

     imageView.contentMode = UIViewContentModeScaleAspectFit;
    

    编辑: 我刚刚看到您似乎想将 imageViews 的大小调整为图像....不同

    【讨论】:

      【解决方案4】:

      这就是我所做的:

      imageView.clipsToBounds = YES;
      [imageView setContentMode: UIViewContentModeScaleAspectFit];
      

      这对我有用。

      【讨论】:

        猜你喜欢
        • 2021-08-30
        • 1970-01-01
        • 2017-12-18
        • 2012-11-17
        • 1970-01-01
        • 2012-12-31
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多