2013-12-13 4 views
7

У меня есть динамический UIImage и UIImageView с фиксированной шириной 280.0px, и я использую автомат. В представлении UIImage я установил ограничения ширины и высоты и понизил приоритет ограничения высоты. Я выбрал «aspect fit» и поднял приоритет обжатия контента и сжатия до 1000. В этом случае размер UIImageView изменяется, чтобы поддерживать соотношение, но высота больше, чем я хочу. Соотношение сторон сохраняется, поскольку в верхней и нижней частях UIImageView есть пустые места. Я хотел бы удалить эти пробелы и автоматически изменить размер высоты, чтобы идеально подобрать UIImage.Как правильно масштабировать изображение с фиксированной шириной и автоматической компоновкой?

ответ

1

Я решил следующим образом:

-(CGFloat) scaleImageAutoLayout:(UIImageView *)imageView withWidth:(CGFloat)width 
{ 
    CGFloat scale = width/imageView.image.size.width; 
    CGFloat height = imageView.image.size.height * scale; 
    NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(imageView); 
    [imageView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString  stringWithFormat:@"V:[imageView(%f)]",ceilf(height)] 
                    options:0 metrics:nil views:viewsDictionary]]; 
    return height; 
} 
7

Что-то вроде этого ...

UIImage *image = ...; 
UIImageView *imageView = ...; 

imageView.image = image; 
float ar = image.size.width/image.size.height; 

NSLayoutConstraint* aspectConstraint = [NSLayoutConstraint constraintWithItem: imageView 
                 attribute: NSLayoutAttributeWidth 
                 relatedBy: NSLayoutRelationEqual 
                  toItem: imageView 
                 attribute: NSLayoutAttributeHeight 
                 multiplier: ar 
                  constant: 0]; 

[parentView addConstraint: aspectConstraint]; 
+0

Спасибо! вы отвечаете правильно. Я решил уже таким образом, но используя визуальный формат для ограничений – matteosilv

+0

Этот ответ является идеальным и легким – xleon

Смежные вопросы