利用可能なiOSデバイス用に、線/目盛りの開始間の正確な1mmの距離で定規を描画しようとしています。通常、私は PPI を取得し、ピクセルの距離を計算します。Objective-C を使用すると、このようには機能しないようです。
linesDist
「画面座標ピクセル」に1mmの距離を含める必要があります。
どのように私はこれを達成することができますか?
私の基本的なコードは次のようになります: UIView である RulerView.m:
-(void)drawRect:(CGRect)rect
{
[[UIColor blackColor] setFill];
float linesDist = 3.0; // 1mm * ppi ??
float linesWidthShort = 15.0;
float linesWidthLong = 20.0;
for (NSInteger i = 0, count = 0; i <= self.bounds.size.height; i = i + linesDist, count++)
{
bool isLong = (int)i % 5 == 0;
float linesWidth = isLong ? linesWidthLong : linesWidthShort;
UIRectFill( (CGRect){0, i, linesWidth, 1} );
}
}
以下の回答に基づいて、編集ppi検出(本当に醜い):
float ppi = 0;
switch ((int)[UIScreen mainScreen].bounds.size.height) {
case 568: // iPhone 5*
case 667: // iPhone 6
ppi = 163.0;
break;
case 736: // iPhone 6+
ppi = 154.0;
break;
default:
return;
break;
}