UITextField 텍스트에 그림자 효과
의 텍스트에 그림자를 추가 할 수 UITextField
있습니까?
3.2부터 CALayer 섀도우 속성을 사용할 수 있습니다.
_textField.layer.shadowOpacity = 1.0;
_textField.layer.shadowRadius = 0.0;
_textField.layer.shadowColor = [UIColor blackColor].CGColor;
_textField.layer.shadowOffset = CGSizeMake(0.0, -1.0);
약간의 다른 문제가 있습니다. UILabel에 흐린 그림자를 원합니다. 많은 것도 문제에 대한 해결책은 Tyler의 번호 (2)였습니다.
내 코드는 다음과 달라집니다.
- (void) drawTextInRect:(CGRect)rect {
CGSize myShadowOffset = CGSizeMake(4, -4);
CGFloat myColorValues[] = {0, 0, 0, .8};
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(myContext);
CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef myColor = CGColorCreate(myColorSpace, myColorValues);
CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor);
[super drawTextInRect:rect];
CGColorRelease(myColor);
CGColorSpaceRelease(myColorSpace);
CGContextRestoreGState(myContext);
}
이 UILabel에서 확장되고 그림자가있는 텍스트를 오른쪽 4px로 그립니다. 그림자는 불투명도가 80 % 인 회색이며 눈에 다양 게 흐릿합니다.
저는 Tyler의 솔루션 2 번이 Tyler의 1 번보다 성능면에서 조금 더 낫다고 생각합니다. 뷰에서 하나의 UILabel 만 다루고 모든 프레임을 다시 그리는 것이 아니라고 가정 할 때 a보다 성능이 좋지는. 일반 UILabel.
추신이 코드는 Quartz 2D 문서 에서 많이 빌 렸습니다.
.NET과 같은 방식으로 여기에 텍스트 그림자에 대한 기본 지원이 제공되지 않는다고 생각합니다 UILabel
.
두 가지 아이디어 :
(1) [코드 작성이 다소 까다 롭습니다.]UITextField
아주 작은 객실 (아마도 (0.2,0.8)?) 1 초를 추가합니다 . 프로토콜 에서 메소드 textField:shouldChangeCharactersInRange:replacementString:
를 구현하여 모든 텍스트 변경을 수신 할 수 있습니다 . 사용하여 하단 텍스트를 동시에 업데이트 할 수 있습니다. 약간의 텍스트 (그림자)를 사용하여 표시 할 수 있습니다. 추가됨 : 오 예, 이 아이디어 를 사용 한다면 상단 텍스트 필드의 배경색을로 설정하는 것을 잊지 마십시오 .UITextFieldDelegate
[UIColor clearColor]
(2) [더욱 재미있는 코딩] 메소드 를 하위 클래스 UITextField
로 재정의합니다 drawRect:
. 나는 따라 달라지는 것이 지정되는 그리기 방법에 따라 달라 앞까지 언급거야 그래서 내가 이런 짓을하지 않은, 그리고 당신과 같은, 다른 함수를 재정의 할 필요가있는 판명 할 수있다 특정가 인 . 이제 통해 그림자를 그리는 드로잉 게이트웨이 설정 기능 및 통화를 . 제대로 작동하기를 바랍니다. 원본 코드가 드로잉하는 그림자의 그림자 변수를 지우고 그 아이디어가 튀어 나와 전체 드로잉 코드를 직접 작성해야하는 경우 에 대비해 복사 와 함께 제공되는 모든 기능 때문에 권장하지 않습니다. -붙여 넣기 및 일본어 한자 입력.drawTextInRect:
UITextField
CGContextSetShadow
[super drawRect:rect];
UITextField
UITextFields
그림자를 직접 적용하는 방법은 효과가 UITextView
잘못된 방법입니다. 명확한 배경색으로 그림자를 직접 추가하면 모든 하위 뷰가 그림자를 얻습니다.
접근하는 접근 방식은 NSAttributedString
.
NSMutableAttributedString* attString = [[NSMutableAttributedString alloc] initWithString:textView.text];
NSRange range = NSMakeRange(0, [attString length]);
[attString addAttribute:NSFontAttributeName value:textView.font range:range];
[attString addAttribute:NSForegroundColorAttributeName value:textView.textColor range:range];
NSShadow* shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor whiteColor];
shadow.shadowOffset = CGSizeMake(0.0f, 1.0f);
[attString addAttribute:NSShadowAttributeName value:shadow range:range];
textView.attributedText = attString;
그러나 textView.attributedText는 iOS6 용입니다. 더 낮은 버전을 지원해야하는 경우 다음 접근 방식을 사용할 수 있습니다. (추가하는 것을 잊지 마세요 #import <QuartzCore/QuartzCore.h>
)
CALayer *textLayer = (CALayer *)[textView.layer.sublayers objectAtIndex:0];
textLayer.shadowColor = [UIColor whiteColor].CGColor;
textLayer.shadowOffset = CGSizeMake(0.0f, 1.0f);
textLayer.shadowOpacity = 1.0f;
textLayer.shadowRadius = 0.0f;
참조 URL : https://stackoverflow.com/questions/1274168/drop-shadow-on-uitextfield-text
'ProgramingTip' 카테고리의 다른 글
따옴표 안에 있지 않은 모든 인스턴스와 일치하는 정규식 (0) | 2021.01.09 |
---|---|
가장 가까운 10으로 반올림하는 Javascript (0) | 2021.01.09 |
PHP에서 이미 "_"로 시작하는지 확인하는 방법은 무엇입니까? (0) | 2021.01.08 |
프로그래머는 왜 도서관을 피하는 것 같습니까? (0) | 2021.01.08 |
EntityFramework 패키지가 프로젝트에 설치되지 않은 것입니다. (0) | 2021.01.08 |