私はUITableView
異なるサイズの画像を持っています。そのため、プログラムを実行していると、TableView のラベルの開始点が異なります。
すべてのラベルを同じポイントから開始したい。
アライメントがうまくいきません。すべてのラベルを左から一定の距離から開始したい。
そのための解決策はありますか?
私はUITableView
異なるサイズの画像を持っています。そのため、プログラムを実行していると、TableView のラベルの開始点が異なります。
すべてのラベルを同じポイントから開始したい。
アライメントがうまくいきません。すべてのラベルを左から一定の距離から開始したい。
そのための解決策はありますか?
このコードを試してください。UiTableViewでUILabelを整列させるのに非常に便利です。UILabel*label= [[UILabel alloc] init];
label.frame=CGRectMake(80, 2, 180, 60);
label.backgroundColor=[UIColor clearColor];
label.text=[ShopListOfItems objectAtIndex:indexPath.row];
label.textColor=[UIColor whiteColor];
label.font=[UIFont boldSystemFontOfSize:20];
label.numberOfLines=2;
[cell.contentView addSubview:label];
UITableViewCell からクラスを派生させます。
メソッドをオーバーライドしlayoutSubviews
ます。このメソッドでは、imageview、プライマリ ラベルなどのすべてのコンポーネントに適切なフレームを設定します。
CustomCell.h
@interface CustomCell : UITableViewCell
{
}
@end
CustomCell.m
@implementation CustomCell
-(void) layoutSubviews
{
[super layoutSubviews];
self.imageView.frame = SOME_FRAME;
self.textLabel.frame = SOME_OTHER_FRAME;
}
@end
cellForRowAtIndexPath で UITableViewCell からセルを作成する代わりに、上記のセルを使用します。
画像のせいでラベルの位置が乱れている?
はいの場合、それを行うには 2 つの方法があります 1
[imgView setContentMode:UIViewContentModeScaleToFill]
2 最初に画像ビューの幅を取得し、スペース係数を追加してから、uilabel の適切な開始点を設定する必要があります。
UILabel *lbl = ...;
UIImageView * imgView = ....;
CGRect lblFrame = lbl.frame;
lblFrame.origin.x = imgView.frame.origin.x + imgView.frame.size.width + 10;
[lbl setFrame:lblFrame];
編集:
uiimage のサイズ変更が問題にならない場合は、画像のサイズを変更してください...
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage; }
引用符
> [CLASSNAME imageWithImage:yourImage scaledToSize:CGSizeMake(50,50)];