0

私はiPhoneを初めて使用します。国の名前と国の旗をサムネイルとして表示するアプリケーションを作成しています。問題は、すべての画像のサイズが同じではないため、予測できない出力が発生することです。

コードを以下に示します

.hファイル

IBOutlet UILabel *countryLabel;
IBOutlet UIImageView *thumbnailView;
IBOutlet UILabel *populationLable;

.mファイル

#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
4

3 に答える 3

0

「returncell;」のすぐ上にあるこの行を試してください。

cell.imageView.frame = CGRectMake(0,0,32,32);
于 2012-08-21T13:43:06.410 に答える
0

cellForRowAtIndexPartセクションでセルimageViewのフレームを設定するだけです

-(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;
}
于 2012-08-21T13:46:20.000 に答える
0

私は実際に今同じ問題を抱えています。メソッドですべての標準ビューのUITableViewCellサイズが変更されているため、現在の回答は機能しませんlayoutSubviews。したがって、少なくともビューのフレームを変更しても機能しtableView:cellForRowAtIndexPath:ません。

私の知る限り、次のオプションがあります。

  1. layoutSubviews呼び出し後にUITableViewCellをサブクラス化して、imageViewのフレームを変更し[super layoutSubviews]ます。これを試しましたが、画像が大きくなったり小さくなったりするため、textLabelも間違った場所に配置されるため、移動する必要があります。
  2. を使用せずimageView、独自UIImageViewに作成します。もちろん、textLabelを再配置するか、独自に作成する必要があります。欠点は、デバイスを回転させたときに、UILabelUILabelの配置とサイズに注意する必要があることです。 UIImageViewtableViewのサイズが変更されるなど。
  3. UITableViewCellすべてが同じサイズになり、デフォルトの自動レイアウトを利用できるように、画像を透明度で埋めます
  4. この回答のように、その場で画像のサイズを変更します:TableViewの画像のサイズが正しくありません

私は各セルで使用される画像を管理しているので、私自身の場合は3番目のオプションを使用すると思います。

于 2012-09-03T21:52:42.010 に答える