Укажите ширину ячейки. - PullRequest
2 голосов
/ 26 августа 2011

Можно ли ограничить ширину [[cell imageView] стандартом UITableViewCell?Я пробовал [[cell imageView] setFrame:CGRectMake(0, 0, 50, 50)], но это не имеет никакого эффекта.

[РЕДАКТИРОВАТЬ]

В противном случае, возможно ли изменить размер UIImage перед его добавлением вUIImageView?

Ответы [ 6 ]

6 голосов
/ 19 апреля 2013

Вы можете использовать метод .transform в примере UIView

cell.imageView.transform = CGAffineTransformMakeScale(0.65, 0.65);

// если вы создаете подкласс UITableViewCell, вы можете сделать это тоже

- (void)layoutSubviews {

    [super layoutSubviews];
    self.imageView.bounds = CGRectMake(10,5,65,65);
    self.imageView.frame = CGRectMake(10,5,65,65);
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;

    if (self.imageView.image) {
        //TODO: adjust the textLabel and detailTextLabel
    }

}
2 голосов
/ 26 августа 2011

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

0 голосов
/ 28 апреля 2016

вот мое быстрое решение этой проблемы

//
//  UITableVIewCellBasicWithFixedSizeImage.swift
//
//  Created by Andrew Ashurow on 4/28/16.
//  Copyright © 2016. All rights reserved.
//

class UITableVIewCellBasicWithFixedSizeImage: UITableViewCell {
        private let
        IMAGE_VIEW_WIDTH:CGFloat        = 27,
        TEXT_VIEW_LEFT_INSET:CGFloat    = 15

        override func layoutSubviews() {
            super.layoutSubviews()
            if let
                imageView = imageView,
                textLabel = textLabel{
                //set fixed image width
                imageView.frame = CGRect(
                    origin: imageView.frame.origin,
                    size: CGSize(
                        width: IMAGE_VIEW_WIDTH,
                        height: imageView.frame.size.height
                    )
                )
                imageView.contentMode = .Center
                imageView.autoresizingMask = .None

                //calculate textLabel inset
                textLabel.frame = CGRect(
                    origin: CGPoint(
                        x: imageView.frame.origin.x + imageView.frame.size.width + TEXT_VIEW_LEFT_INSET,
                        y: textLabel.frame.origin.y
                    ),
                    size: textLabel.frame.size
                )

            }
        }
    }
0 голосов
/ 26 августа 2011

Это встроенная функция, обеспечивающая imageView для каждой ячейки.Его кадр не может быть изменен, если он не подклассифицирован.

Однако вы можете добавить любой из ваших собственных изображений imageView, просто добавив следующий код в метод,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString* cellIdentifier = @"cellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(cell == nil)
    {
        cell = (UITableViewCell*) [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
        UIImageView* *myView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
        [myView setImage:image];
        myView.tag = 123;

        [cell.contentView addSubview:myView];
        [myView release];
    }
    else
    {
        myView = (UIImageView*) [cell.contentView viewWithTag:123];
    }
}
0 голосов
/ 26 августа 2011

Размер изображения Fix:

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[imgview setImage:image];
[cell addSubview:imgView];
[imgView release];
0 голосов
/ 26 августа 2011

Нет, это невозможно.

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

UITableViewCell *cell = (UITableViewCell *)[tableView    dequeueReusableCellWithIdentifier:CellIdentifier];

UIImageView *imgView; 
if(cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

    imgView = [[UIImageView alloc] initWithFrame:(100,0,100,62)];
    [imgView setImage:[UIImage imageNamed:@"img.png"]];
    imgView.tag = 55;
    [cell.contentView addSubview:imgView];
    [imgView release];
} 
else
{
    imgView = (id)[cell.contentView viewWithTag:55];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...