2014-11-04 2 views
0

에 그려진 UIBezierPath에 선 대시 패턴을 적용하려고합니다. 나는 자바 스크립트를 사용하기 전에 웹에서이 일을했고 나는 특정 배열 값의 설정은 아래의 결과를 얻었다 :두 장치의 라인 대시 패턴 길이의 차이

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

JavaScript

다음과 같이 내가 목표 - C의 대시 패턴을 그릴 같은 배열을 사용 :

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]; 

이제 첫번째 샷에서 맥이고 두 번째는시오에서이다. 두 모양의 치수는 동일합니다. 보시다시피, 맥의 사각형의 길이에있는 대시의 수는 약 4 개이지만 iPad의 사각형에서는 너무 많습니다. 대시 길이의 차이는 두 장치의 해상도 때문이라고 생각하지만 확실하지 않습니다. 또한이 문제를 해결하는 방법을 알고 싶습니다.

답변

0

상기 CAShapeLayer의 contentsScale 속성을 조정해볼 수 있습니다. 기본적으로이 속성은 1.0이며, 픽셀과 점 사이에 1 대 1 매핑이 이루어지며 이는 망막 화면에서 원하는 것과 다릅니다. UIView에 연결된 레이어는 레이어에서 설정 한 적절한 값을 가져 오지만이 레이어를 직접 만드는 것으로 가정하면 속성에 올바른 값이 포함되어 있는지 확인해야합니다.

예를 들어,이 코드가 일부 UIView 하위 클래스에있는 경우보기가 있다면 shapeLayer.contentsScale = [view.layer contentsScale];을 사용하는 것이 좋습니다. 그렇지 않으면 UIScreen을 직접 볼 수 있습니다.
Another SO post discussing .contentsScale

+0

CALayer Reference for .contentsScale 예이 코드는 UIView 하위에있다. 그러나 contentScale의 정확한 값을 어떻게 알 수 있습니까? 또한 shapeLayer.contentsScale = 500.0 – blancos

+0

코드를 추가해야합니다. 기술적으로 2.0 (망막) 또는 3.0 (6+), 뭔가 다른 일이 벌어지고있는 것 같아요, shapeLayerForm은 CAShapeLayer입니다, 맞습니까? 그리고 당신은 그 층의 규모를 바꾸고 있습니까? –