2013-12-02 3 views
0

Я ухожу iCarossel с SDWebImage. Все работает отлично, но когда размер изображения слишком велик, он просто выходит из экрана.Изменение размера UIImageView в iOS

Ниже приводится фрагмент, где вид изображения генерируется

view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 

[((UIImageView *)view) setImageWithURL:[NSURL URLWithString:@"http://www.pizzatower.com/img/icons/Pizza-icon.png"]]; 
//  [((UIImageView *)view) setImageWithURL:[NSURL URLWithString:@"http://www.rivercitypizza.com/PepperoniPizza-full.jpg"]]; 

view.contentMode = UIViewContentModeCenter; 
view.frame = CGRectMake(0, 0, 256, 256); 
label = [[UILabel alloc] initWithFrame:view.bounds]; 
label.backgroundColor = [UIColor clearColor]; 
label.font = [label.font fontWithSize:10]; 
label.tag = 1; 
[view addSubview:label]; 

Я попытался changint атрибут frame, но ничего не меняется. Может ли кто-нибудь указать мне, как изменить размер изображения и сохранить его в размере экрана?

+1

может быть, вы должны установить UIImageView свойство contentMode –

ответ

2

Если вы используете view.contentMode = UIViewContentModeScaleAspectFit;, ваше изображение будет масштабироваться для размещения внутри рамки.

+0

Как включить это в моем коде ? http://stackoverflow.com/questions/23316634/how-to-cache-image-and-scale-it-correctly – Lion789

2
  1. Set Your UIImageView ContentMode

    YourImageView.contentMode = UIViewContentModeScaleToFill;

  2. Используйте этот код

Запись эта строка в коде.

UIImage *ResizeImage=[self resizeImage:YourMainUIImage resizeSize:CGSizeMake(100,100)]; 

Добавить добавить этот метод в ViewController

-(UIImage *) resizeImage:(UIImage *)orginalImage resizeSize:(CGSize)size 
{ 
    CGFloat actualHeight = orginalImage.size.height; 
    CGFloat actualWidth = orginalImage.size.width; 

    float oldRatio = actualWidth/actualHeight; 
    float newRatio = size.width/size.height; 
    if(oldRatio < newRatio) 
    { 
     oldRatio = size.height/actualHeight; 
     actualWidth = oldRatio * actualWidth; 
     actualHeight = size.height; 
    } 
    else 
    { 
     oldRatio = size.width/actualWidth; 
     actualHeight = oldRatio * actualHeight; 
     actualWidth = size.width; 
    } 

    CGRect rect = CGRectMake(0.0,0.0,actualWidth,actualHeight); 
    UIGraphicsBeginImageContext(rect.size); 
    [orginalImage drawInRect:rect]; 
    orginalImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return orginalImage; 
} 
1

Попробуйте с этим:

UIImage *resizedImage = [self imageWithImage:self.image scaledToSize:CGSizeMake(768, 1024)]; 

- (UIImage *)imageWithImage:(UIImage *)imagee scaledToSize:(CGSize)newSize { 
    //UIGraphicsBeginImageContext(newSize); 
    // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution). 
    // Pass 1.0 to force exact pixel size. 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [imagee drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 
Смежные вопросы