我有一个在xib文件中定义的自定义视图,其中包含一个UIImageView。
以编程方式添加图像。我不会在编译时显示确切的图像大小。
imageView的高度在设计上是不变的,宽度必须是动态的。
UIImageView应该在设置后自动调整大小以适应图像,但它没有。
我试过了:
没有任何事情有助于取得理想的结果。
我的代码是:
@implementation EVACustomNavBar
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{
[[NSBundle mainBundle] loadNibNamed:@"EVACustomNavBar" owner:self options:nil];
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.frame.size.width, self.frame.size.height);
[self addSubview:self.view];
}
return self;
}
-(void)setLogo:(UIImage *)logo
{
NSLog(NSStringFromCGRect(self.logoView.bounds));
NSLog(NSStringFromCGSize(logo.size));
self.logoView.backgroundColor = [UIColor blackColor];
self.logoView.image = logo;
CGRect ivFrame = self.logoView.bounds;
CGFloat aspectRatio = logo.size.width / logo.size.height;
ivFrame.size.width = ivFrame.size.height * aspectRatio;
self.logoView.bounds = ivFrame;
NSLog(NSStringFromCGRect(self.logoView.bounds));
}
@end
我尝试在viewConid文件中的viewDidLoad和viewDidAppear中调用setLogo。
我尝试了logoView.bounds和logoView.frame。输出是:
logoView.bounds before setting: {{0, 0}, {0, 44}}
logo size: {82, 71}
logoView.bounds after setting{{0, 0}, {50.816898, 44}}
所以即使设置UIImageView的框架也没有帮助。
答案 0 :(得分:2)
尝试在IB中创建宽度约束,而不是设置图像视图的边界或框架,将其附加到类中的IBOutlet并更新宽度约束。