是否可以约束[[cell imageView]
标准UITableViewCell
的宽度?
我已经尝试了[[cell imageView] setFrame:CGRectMake(0, 0, 50, 50)]
但它没有效果。
[编辑]
否则,是否可以在UIImage
中添加UIImageView
之前更改{{1}}尺寸?
答案 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
)
}
}
}