Ограничить размер UIImage, который устанавливается программно - PullRequest
0 голосов
/ 11 ноября 2011

Я динамически загружаю изображения из веб-службы. Изображения будут загружены (с [UIImage imageWithData:data];) и помещены в UIImageView в моем пользовательском UITableViewCell с использованием setImage сообщения

. Я дал imageView ширину и высоту 27 на 19 в компоновщике интерфейса и сказал ему «Соотношение сторон» (попробовал все остальные тоже кстати), но изображение этого не делает. Это просто масштабируется (в аспекте, я думаю), чтобы заполнить ячейку представления.

Я пробовал много вещей, таких как изменение размера изображения (выполняет свою работу, но я могу сосчитать пиксели на моем дисплее сетчатки), изменение размера UIImageView ... Но я просто не понимаю ... Кто-то получил идея, что я делаю не так?

Код, который изменяет ячейку:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"NewsTableViewCell" owner:self options:nil];
        cell = self.tableCell;
        self.tableCell = nil;
    }

    viArticle *article = [self.viData.articles objectAtIndex:indexPath.row];

    UILabel *label;

    label = (UILabel *)[cell viewWithTag:1];
    label.text = article.title;

    label = (UILabel *)[cell viewWithTag:2];
    label.text = [NSString stringWithFormat:@"%@ %@", article.time, article.type];

    if (article.image != nil) {
        UIImageView *imageView;
        imageView = (UIImageView *)[cell viewWithTag:0];
        [imageView setImage:article.image];

    }

    return cell;
}

Это вид:

Custom tableView cell

И настройки:

enter image description here

Ответы [ 4 ]

0 голосов
/ 18 ноября 2011

Я только что опубликовал «решение» ранее сегодня, но это, похоже, работает, но было неверным предположением. После запроса на IRC я ​​нашел решение real . Я использовал tag 0, этот не должен использоваться. Изменение его на более высокое значение действительно решило мою проблему. Иногда это может быть легко. :)

Спасибо вам всем.

0 голосов
/ 11 ноября 2011

Что произойдет, если вы снимите флажок "Авторазмер подпредставлений"?

0 голосов
/ 14 ноября 2011

@ GuidoH извините за поздний ответ .. Вот код, который добавит изображение в ячейку табличного представления.

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
       static NSString *SimpleTableIdentifier = @" SimpleTableIdentifier ";
       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:   SimpleTableIdentifier];
       if (cell == nil) 
       { 
          cell = [[[UITableViewCell alloc]
          initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];
       }

      UIImage *image = [UIImage imageNamed:@"star.png"]; 
      cell.imageView.image = image;
      NSUInteger row = [indexPath row]; 
      cell.textLabel.text = [listData objectAtIndex:row];
      return cell;
}

//use this delegate it will increase the row size and thus your imagesize will get increased too.

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        return 80;   //value can be changed
}

Я бы предложил масштабировать изображения, что, несомненно, приведет к снижению производительности вашего приложения.

0 голосов
/ 11 ноября 2011

Если вы хотите изменить размер UIImageView, вы можете использовать свойство frame.

Предположим, у вас есть объявление UIImageView в файле .h (давайте возьмем UIImageView *myImage;), и оно связано сИнтерфейсный конструктор тоже.у вас есть синтез в классе .m и т. д.

, затем, когда вы хотите изменить размер UIImageView, используйте

myImage.frame = CGRect(x,y,width,height);

Примечание: объявив ширину и высоту в коде, ширину ивысота, заявленная в IB, будет переопределена.

тогда не забудьте добавить его в подпредставление,

i.e [self.view addSubview:myImage];

и все готово, вы можете увидеть изменения.

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