2010-06-08 3 views
5

저는 iPhone의 Quartz 드로잉 코드에서 CGContextSetShadowWithColor()을 사용하여 텍스트와 다른 것들에 대한 "stomped in"모양을 생성했습니다 (drawRect:drawLayer:inContext:).CGContextSetShadow() - iOS 3.0과 4.0 사이의 그림자 방향이 바뀌 었습니까?

완벽하게 작동했지만, iOS 3.2와 iOS 4.0에 대해 똑같은 코드를 실행하면 그림자가 모두 반대 방향으로 나타납니다. 예 : 다음 코드에서는 검정색 그림자를 1 픽셀 위의 위의 텍스트로 설정했습니다.이 텍스트는 "눌린"모양을 나타내며이 그림자는 1px 이하이며 텍스트 아래에 표준 그림자가 나타납니다.

... 
CGContextSetShadowWithColor(context, CGSizeMake(0.f, 1.f), 0.5f, shadowColor); 
CGContextShowGlyphsAtPoint(context, origin.x, origin.y, glyphs, length); 
... 

이제 내가 잘못했는지 또는이 설정의 처리가 변경되었는지 여부를 알 수 없습니다. 나는 이것을 적어도 나에게 설명 할 수있는 변형을 적어도 고의로해서는 적용하지 않았다. 한 인스턴스에서 텍스트 행렬을 뒤집어 봤지만 다른 행렬에서는 그렇지 못했습니다.이 동작은 일관됩니다. 게다가 SDK 릴리스 노트에서 이에 대한 정보를 찾을 수 없었기 때문에 아마도 나처럼 보입니다. 무엇이 문제일까요?

+1

내 앱에서 동일한 문제가 발생했습니다. 내 그래픽이 거꾸로되어있는 것을 보면 알 수 있겠지만 변환 매트릭스가있는 이상한 것은 아닙니다. OS 버그가 유일한 설명처럼 보입니다. – qrunchmonkey

답변

3

그래서 버그 또는 애플 의도적 인 것 같습니다; 어느 쪽이든 이것을 해결하기 위해 지금은 UIView 카테고리를 사용하고 있습니다. 그림자 Y 방향을 iOS 3.2 이상으로 설정 했으므로 iOS를 지원하는 한 < 3.2 다음 클래스 메서드를 사용하여 방향을 1 또는 -1로 곱합니다. 장치 : 여기에

... 
CGContextSetShadowWithColor(context, CGSizeMake(0.f, [UIView shadowVerticalMultiplier] * -1.f), 0.5f, textShadowColor); 
... 

이 카테고리의 :

@interface UIView (shadowBug) 

+ (NSInteger) shadowVerticalMultiplier;  

@end 


@implementation UIView (shadowBug) 

+ (NSInteger) shadowVerticalMultiplier 
{ 
    static NSInteger shadowVerticalMultiplier = 0; 
    if (0 == shadowVerticalMultiplier) { 
     CGFloat systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; 
     shadowVerticalMultiplier = (systemVersion < 3.2f) ? -1 : 1; 
    } 

    return shadowVerticalMultiplier; 
} 


@end 
0

그들은 수정하기가 쉽지 않은 버그입니다. :)

0

아이폰 OS 4.0은 행동의이 같은 변화를 (I 4.0 내 아이폰 응용 프로그램을 업데이트하는 동안 CGContextSetShadow 검색하여 여기 내 방법을 찾아)가 있습니다. 따라서, 분명히 CGContextSetShadow은 iPhone OS 3.1.3 이전과 연결하는 경우 한 가지 방법으로 작동하고 iPhone OS 3.2 이상과 연결하는 경우 다른 방식으로 작동합니다.

+0

정확합니다. 다행히 현재 카테고리가 3.2 미만으로 작동 하는지를 간단하게 확인할 수 있기 때문에 적어도 내 범주에서와 같이 일관성이 있습니다. – Pascal

+0

이전 SDK에 링크해도 역 분개가 발생합니다. 페이스 북 앱의 뒤집힌 그림자를보세요! –

관련 문제