指定单元格imageView的宽度

时间:2011-08-26 08:48:13

标签: iphone ios uitableview uiimageview

是否可以约束[[cell imageView]标准UITableViewCell的宽度? 我已经尝试了[[cell imageView] setFrame:CGRectMake(0, 0, 50, 50)]但它没有效果。

[编辑]

否则,是否可以在UIImage中添加UIImageView之前更改{{1}}尺寸?

6 个答案:

答案 0 :(得分:6)

您可以在UIView示例中使用.transform方法

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
    }

}

答案 1 :(得分:2)

如果你不能简单地在常规UITableViewCell上设置图像视图的框架,你可以创建一个UITableViewCell子类,并在-layoutSubviews中重新定位图像视图。

答案 2 :(得分:0)

不,这是不可能的。

不应更改其宽度,因为您必须创建UITableViewCell子类,并且可以在UITableViewCell中更改imageview并根据它更改宽度。 或者你可以使用

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];
}

答案 3 :(得分:0)

图像修复大小:

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[imgview setImage:image];
[cell addSubview:imgView];
[imgView release];

答案 4 :(得分:0)

这是为每个单元格提供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];
    }
}

答案 5 :(得分:0)

这是我对此问题的快速解决方案

//
//  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
                )

            }
        }
    }