我是iPhone新手 我正在创建一个应用程序,它显示国家/地区的名称和他们的标志作为缩略图。问题是所有图像的大小不相同,因此有不可预测的输出。
下面给出了代码
IBOutlet UILabel *countryLabel;
IBOutlet UIImageView *thumbnailView;
IBOutlet UILabel *populationLable;
#import "TextFieldAlertViewController.h"
@implementation TextFieldAlertViewController
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [tableData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:[thumbnails objectAtIndex:indexPath.row]];
return cell;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)loadView {
}
- (void)viewDidLoad {
[super viewDidLoad];
tableData = [NSArray arrayWithObjects:@"Australia", @"Brazil",@"China", @"Denmark", @"England", @"France", @"Germany", @"Hong Kong", @"India", @"Japan", @"Korea", @"Labanon", @"Malasiya", @"Niegiria", @"Peru", @"Swidden", nil];
thumbnails = [NSArrayarrayWithObjects:@"aus.png",@"br.png",@"ch.png",@"dk.png",@"eng.png",@"fr.png", @"ger.png",@"hk.png",@"in.png",@"jp.png",@"ko.png",@"lb.png",@"my.png",@"ng.png",@"pe.png",@"sw.png",nil];
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
}
- (void)dealloc {
[super dealloc];
}
@end
答案 0 :(得分:0)
在“return cell;”上方尝试这一行:
cell.imageView.frame = CGRectMake(0,0,32,32);
答案 1 :(得分:0)
只需在cellForRowAtIndexPart
部分
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier];
}
cell.imageView.frame = CGRectMake(50, 10, 200, 50);
return cell;
}
答案 2 :(得分:0)
我实际上现在遇到了同样的问题,目前的答案将无效,因为UITableViewCell
中的所有标准视图都在layoutSubviews
方法中调整大小,因此更改视图的框架,至少在tableView:cellForRowAtIndexPath:
中不起作用。
据我所知,您有以下选择:
layoutSubviews
调用后通过[super layoutSubviews]
继承UITableViewCell来更改imageView的框架,我已经尝试了这个,你还必须移动textLabel,因为它将被放置在错误的位置因为图像现在更大/更小。imageView
,而是创建自己的UIImageView
,当然你必须重新定位textLabel或者更确切地创建自己的UILabel
,缺点是你有要在旋转设备时了解UIImageView
和UILabel的位置和大小,请调整tableView的大小等。UITableViewCell
自动布局我想我会在我自己的情况下使用第三个选项,因为我控制着每个单元格中使用的图像。