とった!
SDKを打ち負かす方法は次のとおりです。
何らかの理由で、UIImageView は、UIGraphicsBeginImageContext によって生成された画像を好みません。その代わりに、クラスを標準の UIView (UIImageView ではなく) のサブクラスとして変更しました。次に drawRect メソッドを実装しました。drawRect メソッド内に、UIGraphicsBeginImageContext ブロックにあったのと同じコードを入れました。
何らかの理由で、このコードは drawRect メソッドで画像を適切にレンダリングしますが、UIGraphicsBeginImageContext ではレンダリングしません (バグの可能性があります、私かもしれません)。
コードは次のとおりです。
- (void)drawRect:(CGRect)rect {
UIImage *backgroundImage = [UIImage imageNamed:imageFile];
CGRect elementSymbolRectangle = CGRectMake(0.0f ,0.0f, backgroundImage.size.width, backgroundImage.size.height);
[backgroundImage drawInRect:elementSymbolRectangle];
// draw the element name
[[UIColor whiteColor] set];
// draw the element number
UIFont *font = [UIFont boldSystemFontOfSize:(smallFontSize)];
CGPoint point = CGPointMake(2,1);
[self.atomicNumber drawAtPoint:point withFont:font];
// draw the element symbol
font = [UIFont boldSystemFontOfSize:largeFontSize];
CGSize stringSize = [self.symbol sizeWithFont:font];
point = CGPointMake((elementSymbolRectangle.size.width-stringSize.width)/2,self.frame.size.height-(largeFontSize)-(largeFontSize/10));
[self.symbol drawAtPoint:point withFont:font];
}
(また、このコードは Apple サンプルコード: theElements にあります)