iPhone에서 메모 앱과 같은보기를 만들고 싶습니다. 메모 앱별로 선을 긋기 위해보기가 필요합니다. 필요한 창에서이 작업을 수행했습니다. 그래서 도움이iPhone 용 UITextView에 괘선 그리기
을 appriciated 될 경우 폰트 메트릭스는 다음 장치 컨텍스트 상에 선을 그릴, 사람이 UITextView에서 이런 짓을하고있다답변
당신이 지배 라인
textView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"RuledLinesPage.png"]];
와 이미지를 사용하여 텍스트 뷰의 backgroundColor로 설정을 시도 할 수 있습니다
패턴 이미지가있는 색상은 채우기 영역이 이미지보다 클 경우 타일 이미지를 만듭니다. 그래서 당신은 이미지 크기가 정확한 크기인지/tileable인지 확인해야 할 것입니다. (나는 'tileable'이 진짜 단어라고 생각하지 않지만 당신이 의미하는 바를 얻을 수 있기를 바랍니다.) 또한 textView의 글꼴과 가장 잘 일치하는 괘선으로 이미지를 만들어야합니다.
행운을 비네.
@lukya 당신의 솔루션은 우리가 UITextView를 스크롤 할 때 텍스트가 그 자리에있는 선들 (이미지에서 오는 부분)을 남기고 스크롤 할 때와 같이 조금 지저분합니다.
더 나은 해결책은 선을 그린 텍스트 뷰에 하위 뷰를 추가하는 것입니다. 텍스트 크기에 대한 변경 내용을 텍스트 증가/감소로 추적하려면 텍스트 뷰에 옵저버를 추가해야합니다.
이것은 답변에 대한 주석이어야하며 "응답"자체는 아닙니다. – Santa
나는 이것이 정상적으로 작동한다고 생각하지만, 해킹 당했다고 생각하며, UITextView 클래스의 메커니즘을 완전히 undestand하지는 않는다.
먼저는 너무
- (void)drawRect:(CGRect)rect {
// Drawing code
// Get the graphics context
CGContextRef ctx = UIGraphicsGetCurrentContext();
[super drawRect:rect];
// Get the height of a single text line
NSString *alpha = @"ABCD";
CGSize textSize = [alpha sizeWithFont:self.font constrainedToSize:self.contentSize lineBreakMode:UILineBreakModeWordWrap];
NSUInteger height = textSize.height;
// Get the height of the view or contents of the view whichever is bigger
textSize = [self.text sizeWithFont:self.font constrainedToSize:self.contentSize lineBreakMode:UILineBreakModeWordWrap];
NSUInteger contentHeight = (rect.size.height > textSize.height) ? (NSUInteger)rect.size.height : textSize.height;
NSUInteger offset = 6 + height; // MAGIC Number 6 to offset from 0 to get first line OK ???
contentHeight += offset;
// Draw ruled lines
CGContextSetRGBStrokeColor(ctx, .8, .8, .8, 1);
for(int i=offset;i < contentHeight;i+=height) {
CGPoint lpoints[2] = { CGPointMake(0, i), CGPointMake(rect.size.width, i) };
CGContextStrokeLineSegments(ctx, lpoints, 2);
}
}
아직도이 매직 넘버 6
걱정 하위 클래스에서의 drawRect을 구현 한 후- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// NSLog(@"scrollViewDidScroll The scroll offset is ---%f",scrollView.contentOffset.y);
[noteText setNeedsDisplay];
}
스크롤에 다시 그리기를 강제로 위임에 다음을 추가해야합니다
Bob
훌륭한 해결책. 그러나 @dave의'self.contentMode = UIViewContentModeRedraw;'를'setNeedsDisplay' 메소드 대신에 서브 클래스 init 메소드에 추가했습니다. – Reggian
하위 클래스 UITextView. -drawRect 오버라이드 (override) : 당신은 텍스트 뷰를 초기화하기 때
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor);
CGContextSetLineWidth(context, self.lineWidth);
CGFloat strokeOffset = (self.lineWidth/2);
CGFloat rowHeight = self.font.lineHeight;
if (rowHeight > 0) {
CGRect rowRect = CGRectMake(self.contentOffset.x, - self.bounds.size.height, self.contentSize.width, rowHeight);
while (rowRect.origin.y < (self.bounds.size.height + self.contentSize.height)) {
CGContextMoveToPoint(context, rowRect.origin.x + strokeOffset, rowRect.origin.y + strokeOffset);
CGContextAddLineToPoint(context, rowRect.origin.x + rowRect.size.width + strokeOffset, rowRect.origin.y + strokeOffset);
CGContextDrawPath(context, kCGPathStroke);
rowRect.origin.y += rowHeight;
}
}
}
는 UIViewContentModeRedraw에 contentMode를 설정해야합니다. 그렇지 않으면 텍스트와 함께 줄이 스크롤되지 않습니다.
self.contentMode = UIViewContentModeRedraw;
이것은 완벽하지 않습니다. 이상적으로 통과 한 직사각형을 그릴 수 있습니다. 그러나 나는 게으르다. 이것은 나의 필요에 부응했다.
이것을 확장 할 수 있습니까? 예 : rowNumber 무엇입니까? –
죄송합니다. 복사하고 붙여 넣을 때 코드가 남아 있습니다. 이 코드와 관련이 있다고 생각하지 않습니다. 나는 그것을 제거했습니다. –
@DaveBatton self.lineWidth는 무엇입니까 ?? 그것은 정적 또는 동적 ?? – Hitarth
- 1. Facebook 용 럭키 그리기
- 2. iPhone 그리기 선 두께
- 3. iPhone/iPad에서 선 그리기
- 4. iPhone - 2D 도형 그리기
- 5. iphone : MKMapView에서 그리기?
- 6. iPhone 용 코어 플롯 사용, x 축에 날짜 그리기
- 7. Google지도에서 그리기
- 8. UITextView에 UIImage를 추가하는 방법
- 9. UITextView에 단어 제한 적용
- 10. UITextView에 PDF 콘텐츠 표시
- 11. UITextView에 데이터 미리 채우기?
- 12. UITextView에 터치를 전달하는 방법
- 13. UITextView에 개행 추가하기
- 14. UITextView에 텍스트를 보내려면 어떻게해야합니까?
- 15. iphone : 모든 터치로 그림 그리기?
- 16. iphone SDK로 개별 픽셀 그리기
- 17. iPhone SDK의 UITextView에 붙여 넣기 메뉴의 배치를 제어하는 방법
- 18. iPhone - 빠르고 간단하게 OpenGL ES로 2D 그리기
- 19. 목표 C - UITextView에 데이터 표시
- 20. UITextView에 하이퍼 링크를 삽입하는 방법은 무엇입니까?
- 21. UIViewController에서 UITableViewCell의 UITextView에 액세스하는 방법?
- 22. iPhone에서 간단한 그래프 그리기
- 23. Android 용 OpenGLE을 사용하여 픽셀 그리기
- 24. UML 클래스 다이어그램 그리기 용 JavaScript 라이브러리
- 25. 그림 그리기 프로그램 인터페이스 용 OO 디자인
- 26. iPhone 응용 프로그램에서 벡터 아트 그리기
- 27. iphone에 그리기
- 28. iPhone 용 시작 개발
- 29. iPhone 용 C 컴파일러?
- 30. iphone 용 튜토리얼 앱
작동하는 경우 똑똑합니다. 이미지는 글꼴을 프로그래밍 방식으로 생성 할 수 있습니다. – Justin