UIViewオブジェクトを作成して返すことを目的としたメソッドを使用して、UIViewにカテゴリを作成しました。エラーなしで実行されますが、空のUIViewを返します。コードは次のとおりです。
#import <UIKit/UIKit.h>
@interface UIView (makeTableHeader)
-(UIView *) makeTableHeader:(NSString *)ImageName
withTitle:(NSString *)headerTitle
usingFont:(NSString *)fontName
andFontSize:(CGFloat)fontSize;
@end
実装は次のとおりです。
-(UIView *) makeTableHeader: (NSString *)ImageName
withTitle:(NSString *)headerTitle
usingFont:(NSString *)fontName
andFontSize:(CGFloat)fontSize {
// Create a master-view:
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 34)];
// Create the Image:
UIImageView *headerImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:ImageName]];
headerImageView.frame = CGRectMake(0, 0, 320, 34);
// Now create the Header LABEL:
UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 320, 34)];
headerLabel.text = headerTitle;
headerLabel.font = [UIFont fontWithName:fontName size:fontSize];
headerLabel.backgroundColor = [UIColor clearColor];
headerLabel.textColor = [UIColor whiteColor];
headerLabel.shadowColor = [UIColor blackColor];
headerLabel.shadowOffset = CGSizeMake(1.0, 1.0);
// Finally add both both Header and Label as subview to the main Header-view:
[headerView addSubview:headerImageView];
[headerView addSubview:headerLabel];
return headerView;
}
これが私がこのカテゴリメソッドと呼ぶ方法です:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *hView = [[UIView alloc] init];
[hView makeTableHeader:@"redGradientHeader5@2x.jpg"
withTitle:@"Test Banner"
usingFont:@"boldSystemFont"
andFontSize:18];
return hView;
}
コードは正常に実行されますが、空のビューが表示されます。興味深いことに、ビューのサイズは正しく設定されており、要求したCGRect座標が与えられていますが、ビュー内に画像やラベルはありません。
誰かが何が悪いのかわかりますか?