UILabel のテキストをインデントして、背景色を示すテキストの周りにマージンを残そうとしています。ここでの提案に従って、次のtextRectForBounds:limitedToNumberOfLines:ようにオーバーライドしました。
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
CGRect intermediate = CGRectMake(bounds.origin.x+MARGIN,bounds.origin.y+MARGIN,bounds.size.width-2*MARGIN,bounds.size.height-2*MARGIN);
return [super textRectForBounds:intermediate limitedToNumberOfLines:numberOfLines];
}
しかし、私が何をしても、テキストは四角形の左の境界線にぴったりとはまります。描画が返された CGRect の原点部分を無視しているように見えます (ただし、幅部分を尊重しているように見えますが、たとえばbounds.size.width-200、textRectForBounds が返す rect が適切に狭く、テキストが描画されるように中間の幅に縮小するかのように)細長い柱)。
では、図面が-returned-rect の origin.x と origin.yUILabelを尊重するようにするには、他に何をする必要がありますか? できれば'sをtextForRectBoundsオーバーライドしたくありません。UILabeldrawTextInRect
更新:これはずっと前のことで、他の質問がうまくいかなかった理由を正確に思い出せません。UILabel複数の行を使用しようとしていたためだと思いますが、その場合、ここでの解決策は機能しませんでした。