2013-08-08 7 views
3

Я пытаюсь установить изображение на UIImageView из SimpleTableCell в UITableView. Я изменил размер изображения, но всякий раз, когда я пытаюсь установить изображение, он автоматически изменяет размеры. Я попытался использовать код here, чтобы изменить размер изображения и установить его. Но это работает, когда я устанавливаю размеры изображения (20x20), что составляет половину от размера UIImageView (40x40). Так оно выходит размытым. Я также попытался установить UIAspectRatioFit/UIAspectratioFill и clipsToBounds = YES. Ничто не работает.UIImageView автоматически изменяет размер

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

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    UIImage *userImage = [UIImage imageWithData:userImageData scale:self.profileImage.frame.size.height/self.profileImage.frame.size.width]; 

    UITableViewCell *cell = [self.myTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 

    cell.imageView.image = userImage; 
} 

Но я храню это изображение в каталог документов, а затем попытаться перезагрузка в другом месте, происходит изменение размера. Любые решения?

+0

Ваш SimpleTableCell - это субкласс UITableViewCell, который вы создали? Этот imageView является свойством этого подкласса? –

+0

Вы попробовали установить UIViewAutoResizeMask в None? – x4snowman

+0

Да, я попытался настроить UIVIewAutoResizeMask на none и contentMode на UIViewContentModeScaleAspectFit. –

ответ

14

Ваш SimpleTableCell является подклассом UITableViewCell, который вы создали? Этот imageView является свойством этого подкласса?

Только предположение:

Каждый UITableViewCell имеет встроенный ImageView свойство только для чтения. В коде, который вы опубликовали, вы используете это свойство по умолчанию, которое, как я полагаю, не может быть изменено его каркасом, оно фиксируется в левой части ячейки.

Посмотрите на ImageView собственности в документации: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/index.html#//apple_ref/occ/instp/UITableViewCell/imageView

Так что, если у вас есть своя собственная ячейка с собственным ImageView, убедитесь, что не называть его imageView тоже, потому что вы можете закончить с помощью по умолчанию UITableViewCell «S собственности, а не свой собственный, который будет иметь все ваши кадра настройки и т.д.

Вы должны ссылаться на вашу ячейку вашей customClass и вызвать вашу собственность, как это:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    UIImage *userImage = [UIImage imageWithData:userImageData scale:self.profileImage.frame.size.height/self.profileImage.frame.size.width]; 

    SimpleTableCell *cell = (SimpleTableCell*)[self.myTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 

    cell.myImageView.image = userImage; 
} 

Не знаю, действительно ли проблема связана с этим, так что дайте мне знать, помогло это или нет.

+0

Я использую ячейку UITableViewCell по умолчанию, предоставляемую в iOS. Это не обычай. –

+0

Итак, как я уже сказал, нецелесообразно редактировать эти свойства по умолчанию для чтения. Вы должны подумать о создании своей собственной ячейки с изображением внутри нее, где вы можете свободно редактировать его свойства, такие как frame, contentMode и т. Д. –

+1

Да, я закончил это, хотя я очень старался этого избежать. Но спасибо за ваш ответ. :) –

1

Когда странное изменение размера происходит для меня, Autolayout является моим первым подозреваемым. Попробуйте отключить автоспуск и посмотреть, не изменилось ли изменение размера.

  1. Выберите ViewController в раскадровке или NIB
  2. Нажмите «File Inspector» вкладку на правой стороне окна Xcode
  3. В разделе «Interface Builder документ», снимите флажок «Использовать Autolayout '

Если вам нужен автозапуск, вам, вероятно, придется сразиться с ним каким-то кодом.

+0

Согласитесь, но также проверьте изображение imageMode. Убедитесь, что это один из режимов «* Fit». – danh

+0

Я не использую пользовательскую ячейку. Я просто хочу использовать UITableViewCell по умолчанию и соответственно менять кадры. –

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