2015-04-21 4 views
0

Я делал это раньше, но по какой-то причине он не работает. Я стараюсь иметь круглые фотографии в своем столе, и все работает отлично, за исключением одного:Измените размер изображения равным для всех размеров

Фотографии не одинакового размера, поэтому округление не работает должным образом, а некоторые фотографии просто смешные ,

Я пользуюсь приведенным ниже кодом.

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:identifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; 
} 

cell.imageView.layer.masksToBounds = YES; 
cell.imageView.clipsToBounds = YES;; 
cell.imageView.layer.cornerRadius = cell.imageView.layer.frame.size.width/2; 

//Getting the picture data of the current contact 
NSData *pictureData = [[[[dataArray objectAtIndex:indexPath.section]objectAtIndex:indexPath.row]picture]data]; 
UIImage *picture; 

//Setting the picture or a placeholder if none was found 
if (pictureData == nil || pictureData.length < 15){ 
    picture = [UIImage imageNamed:@"placeholder.png"]; 
}else{ 
    picture = [UIImage imageWithData:pictureData]; 
} 

cell.textLabel.text = [[[dataArray objectAtIndex:indexPath.section]objectAtIndex:indexPath.row]compositeName]; 
cell.imageView.image = picture; 

return cell; 

Что делать, чтобы иметь круглые изображения во все времена, учитывая некоторые из изображений (видимо ...) разных размеров.

Обратите внимание, что ячейки и изображения в виде таблицы имеют равную высоту/ширину, они просто получают значение cornerradius, которое, по-видимому, не является половиной их высоты, но они все еще не шире или выше.

ответ

0

Прежде чем добавлять UIImage в UIImageView, я рекомендую вам изменить размер изображения до нужного размера (размера UIImageView).

Таким образом изображение будет округлено, а производительность при прокрутке будет лучше.

Для того, чтобы изменить размер изображения, вы можете использовать следующий метод:

- (UIImage*) scaleImage:(UIImage*)image toSize:(CGSize)newSize { 
    CGSize scaledSize = newSize; 
    float scaleFactor = 1.0; 
    if(image.size.width > image.size.height) { 
     scaleFactor = image.size.width/image.size.height; 
     scaledSize.width = newSize.width; 
     scaledSize.height = newSize.height/scaleFactor; 
    } 
    else { 
     scaleFactor = image.size.height/image.size.width; 
     scaledSize.height = newSize.height; 
     scaledSize.width = newSize.width/scaleFactor; 
    } 

    UIGraphicsBeginImageContextWithOptions(scaledSize, NO, 0.0); 
    CGRect scaledImageRect = CGRectMake(0.0, 0.0, scaledSize.width, scaledSize.height); 
    [image drawInRect:scaledImageRect]; 
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext();  

    return scaledImage; 
} 

и использовать его как это:

cell.imageView.image = [self scaleImage:picture toSize:CGSizeMake(width, height)]; 
Смежные вопросы