自动布局是拉伸图像,自动布局,ios

Posted

技术标签:

【中文标题】自动布局是拉伸图像,自动布局,ios【英文标题】:auto layout is stretching image, autolayout, ios 【发布时间】:2013-02-17 02:12:40 【问题描述】:

我将 uiimageview 添加到按钮的方式是:

    uiimageview 位于 y 轴中心(刚刚再次编辑) uiimageview 的尾随空间总是距离按钮 10 个点

为此,我正在执行以下操作

 // Just added these lines 
    UIImage *img                =   [UIImage imageNamed:@"reload.png"];
    indicator                   =   [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, img.size.width, img.size.width)];
    indicator.image             =   img;

    [self.logInButton addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"H:|[indicator]-(10)-|"
                                                                                 options:0
                                                                                 metrics:nil
                                                                                   views:NSDictionaryOfVariableBindings(indicator)]];

    [self.logInButton addConstraint:[NSLayoutConstraint constraintWithItem:self.logInButton
                                                              attribute:NSLayoutAttributeCenterY
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:indicator
                                                              attribute:NSLayoutAttributeCenterY
                                                             multiplier:1.0
                                                               constant:0]];

但是,我得到的是 uiimageview 像下面这样伸展

有没有人对此有任何想法。所有的 cmets 都在这里表示赞赏。

【问题讨论】:

【参考方案1】:

您的约束是说图像视图应与左边缘齐平并距右侧 10 个点,因此如果按钮大于图像的大小,图像将被拉伸。您要么需要将其在 x 方向居中(并消除右侧的那个),要么为图像视图设置特定大小。

【讨论】:

我还是一头雾水,刚刚编辑了OP,请再看一遍。 @ttran,我不明白你的困惑。您的 constraintWithItem 代码以 y 轴为中心,这是垂直的,而不是水平的。视觉格式使其靠左边缘(H:|[indicator] 这部分)和右边缘的 10(这部分 [indicator]-(10)-|)。您需要摆脱视觉约束并添加另一个像您的第二个,但具有 CenterX 属性。 抱歉,如果 OP 再次失去你。我的目标就像this。这就是我使用centerY的原因。就像你说的,如果我删除视觉约束,我不会有一个位于按钮右边缘 10 处的图像。 @ttran,好的,您终于指出了您要完成的工作,这很好。我无法从您发布的内容中看出它应该是什么样子。所以,你只想做出正确的约束,摆脱左边的约束。只需@"[指标]-(10)-|" 感谢 rdelmar。我为正确的约束所做的是 [indicator]-(10)-|:H 并且 xcode 抱怨语法。现在我知道如何做正确的了。

以上是关于自动布局是拉伸图像,自动布局,ios的主要内容,如果未能解决你的问题,请参考以下文章

横向使用自动布局的 iOS 拉伸视图

自动布局为 UIButton 拉伸选定的图像

iOS 自动布局 - 当您想让视图拉伸到其父级的完整大小时,正确的方法是啥?

具有纵向和横向图像视图的自动布局

iOS自动布局重置我所有的图像位置

iOS 自动布局小结