防止UIButton.imageView按图像调整大小

时间:2018-10-09 12:33:43

标签: ios uibutton uiimageview uiimage size

我有一个default: &default adapter: postgresql template: template0 encoding: unicode username: <%= ENV['DB_USER'] %> database: <%= ENV['POSTGRES_DB'] %> host: <%= ENV['DB_HOST'] %> pool: 5 timeout: 5000 development: <<: *default ,其固定高度为40(约束高度为40),其中我通过代码设置了图像,该文件的尺寸为 64x64 。 结果应该是:

enter image description here

我添加了如下图像:

UIButton

我得到的结果是:

enter image description here

image = [UIImage imageNamed:@"icon-clear"]; [self setImage:image forState:UIControlStateNormal]; 添加了黑色边框,以实现更好的可视化效果。 imageView的最终大小为 64x40

我猜发生的事情是imageView获得了图像,并将其调整为 64x64 ,并通过按钮约束再次缩小为40,但保留了64的宽度。

我尝试了很多事情:

imageView

self.imageView.frame = CGRect(0,0,32,32);
self.imageView.bounds = CGRect(0,0,32,32);

let aspectRatioConstraint = [NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.imageView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0];
[self.imageView addConstraint:aspectRatioConstraint];

唯一发生视觉变化的是:

[self.imageView.widthAnchor constraintEqualToConstant:32];

但是最终图像质量差,我猜想是高性能问题。

我只想在多种尺寸的情况下使用pdf矢量文件。如何为按钮imageView提供固定大小的图片,UIGraphicsBeginImageContext(size); [image drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIImage *destImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

非常感谢!

1 个答案:

答案 0 :(得分:0)

我终于通过在self.imageView.frame = CGRectMake(4, 4, 32, 32);方法中添加- (void)layoutSubviews {}来解决了这个问题。

所以

- (void)layoutSubviews {
    [super layoutSubviews];
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    self.imageView.frame = CGRectMake(4, 4, 32, 32);
}

做到了。