나는 약속을 나타내는 수직선을 그리는 앱을 가지고있다. 그들은 내가 그려주고 싶은 곳에 그려지지 않고있다. 여기서 현재 인출되고있는 예이다 :x, y 설정에 따라 선이 그려지지 않는 이유는 무엇입니까?
이 각각의 세로줄에 대한 x 및 y를 구성하고 그리는 코드의 해당 부분이다
// get shop hours from Preferences
NSDate *timeShopOpens; // GMT - 8
NSString *completeDateString;
PreferenceData *prefDataFound = [PreferenceData MR_findFirst];
if(prefDataFound) {
completeDateString = [NSString stringWithFormat:@"%@ %@",
[startDateParts objectAtIndex: 0],prefDataFound.aShopOpens]; // 2014-01-27 1000
timeShopOpens = [formatter dateFromString:completeDateString]; // NSDate 2014-01-27 18:00:00 +0000
}
// compute where to start drawing
NSDateComponents *components = [[NSCalendar currentCalendar]
components:NSCalendarUnitMinute
fromDate:timeShopOpens toDate:ai.aStartTime options:0];
float openAndStartMinutesDiff = [components minute]; // difference between shopOpen time and appt startTime in minutes
float fWhereToStartSegments = (openAndStartMinutesDiff/15); // gives the number of 15-minute segments to begin drawing
float startPosY = 28.0f + (fWhereToStartSegments * 12.5); // compute starting point (adjusted for line width)
// compute duration segments
components = [[NSCalendar currentCalendar]
components:NSCalendarUnitMinute
fromDate:ai.aStartTime toDate:ai.aEndTime options:0];
float startEndDiffMinutes = [components minute]; // difference between stop and start time in minutes <--OK
float fDurationSegments = (startEndDiffMinutes/15); // gives the number of 15-minute segments for duration
NSLog(@"\n\nstartPosY: %f\nopenAndStartMinutesDiff: %f\nfDurationSegments: %f",startPosY, openAndStartMinutesDiff, fDurationSegments);
// Start the line at this point (x,y)
float y = startPosY;
CGContextMoveToPoint(currentContext, column, y);
// compute end point (additional fDurationSegments takes line width into consideration)
CGContextAddLineToPoint(currentContext, column, startPosY + (fDurationSegments * 12.5) + fDurationSegments);
// draw the colored line
CGContextSetLineDash(currentContext, 0, nil, 0); // reset dashed line to straight line
CGContextSetLineWidth(currentContext, LINE_WIDTH); // Set the width for the lines
CGContextStrokePath(currentContext); // draw 'em
을 해당 개체의 값은 여기에 나열되어 있으며 올바른 값을 가지고 있습니다.
timeShopOpens: 2014-01-27 18:00:00 +0000
ai.aStartTimeOpens: 2014-01-27 18:15:00 +0000
startPosY: 40.500000
openAndStartMinutesDiff: 15.000000
fDurationSegments: 4.000000
fWhereToStartSegments: 1.000000
질문 : 왜 올바르게 그리지 않는 이유는 무엇입니까? 생각의
어떻게 보이게 할 것인지 그림을 추가 할 수 있습니까? 시각적 인 참조가있는 경우 코드에서 오류를 찾는 것이 더 쉽습니다. – Hannes
LOL ... 사진을 추가 할 수 없으므로 사진을 찍을 수 없습니다. 그러나, 왼쪽 상단의 빨간색 막대를 상상해 보면 1015 수평선에서 시작하여 1115 줄로 내려 가야합니다. – SpokaneDude
Photoshop을 사용하거나 거친 스케치를 제공하는 것이 무엇이든간에 훨씬 쉽게 만들 수 있습니다. – Hannes