两个设备中线划线图案长度的差异

时间:2014-11-04 08:09:45

标签: ios objective-c core-graphics pixels

我正在尝试将线条划线模式应用到我在UIBezierPath上绘制的CAShapeLayer。在使用javascript之前我在网上完成了这个,我得到了一组特定数组值的结果:

{ var Stroke=[{'type':[{"LONG_DASH_DOT_DOT":"8,2,1,2,1,2"}]}]};

JavaScript

使用相同的数组我在Objective-C中绘制破折号模式如下:

shapeLayerForm.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:8],[NSNumber numberWithInt:2],[NSNumber numberWithInt:1],[NSNumber numberWithInt:2], [NSNumber numberWithInt:1],[NSNumber numberWithInt:2], nil];

Objective-C

现在,第一个截图来自mac,第二个来自iPad。两种形状的尺寸相同。如您所见,mac矩形长度的短划线数量约为4,但在iPad的矩形中,它们太多了。我认为短划线长度的这种差异是由于两个设备的分辨率,但我不确定。另外,我想知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

您可以尝试调整所述CAShapeLayer的contentsScale属性。默认情况下,您会看到属性为1.0,导致像素和点之间的1对1映射,这不是您想要的视网膜屏幕。附加到UIViews的图层获得图层设置的适当值,但假设您自己创建此图层,则应确保该属性包含正确的值。

如果您有一个视图(例如,如果此代码在某个UIView子类中),我建议使用shapeLayer.contentsScale = [view.layer contentsScale];,否则您可以直接查看UIScreen。

CALayer Reference for .contentsScale
Another SO post discussing .contentsScale