У меня есть существующее приложение для iPad (XCode 4.6, ARC, Storyboards и iOS 6.2). Приложение прекрасно работает в режиме «Портрет», но не так хорошо в ландшафтном режиме, используя «Автоматический макет» (см. Изображения ниже).Использование автоматической компоновки с методами рисования CGContext?
Изображение выше показывает режим портрета, который является правильным.
Это ландшафтный режим ... обратите внимание, что не хватает названия и цвет фона.
Это код, который создает верхнюю сетку:
-(void) drawTopGrid {
// set up notification for redrawing topGrid
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(notificationToRedrawTopGrid:)
name:@"redrawTopGrid" object:nil ];
// setup for drawing grid
CGContextRef context = UIGraphicsGetCurrentContext();
#define START_VERTICAL_LINE 1 // was 110
#define VERTICAL_LINE_INCREMENT 110 // was 110
#define VERTICAL_LINE_LENGTH 52 // (compute based on number of hours)
// draw first vertical line
CGContextMoveToPoint(context, START_VERTICAL_LINE, 0); //start
CGContextAddLineToPoint(context, START_VERTICAL_LINE, VERTICAL_LINE_LENGTH); //draw to this point
CGContextStrokePath(context); // draw it...
// draw remainder of vertical lines (based on count of staff positions defined) <--------------- TODO
for(int i = 2; i < 24; i += 2) { // will hold 6 staff positiions
CGContextMoveToPoint(context, (i * VERTICAL_LINE_INCREMENT) - i, 0); //start
CGContextAddLineToPoint(context, (i * VERTICAL_LINE_INCREMENT- i), VERTICAL_LINE_LENGTH); //draw to this point
CGContextStrokePath(context); // draw it...
}
// get the staff names
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pathForStaffNames = [documentsDirectory stringByAppendingPathComponent:@"staffNames.plist"];
NSDictionary *staffDict = [NSDictionary dictionaryWithContentsOfFile:pathForStaffNames];
staffPos1 = [staffDict objectForKey:Slot1];
staffPos2 = [staffDict objectForKey:Slot2];
staffPos3 = [staffDict objectForKey:Slot3];
staffPos4 = [staffDict objectForKey:Slot4];
staffPos5 = [staffDict objectForKey:Slot5];
staffPos6 = [staffDict objectForKey:Slot6];
const float hourFontSize = 18;
UIFont *hourfont=[UIFont systemFontOfSize:hourFontSize];
// draw staff names
[[UIColor redColor] set];
[staffPos1 drawAtPoint:CGPointMake(85, 12) withFont:hourfont]; // increment is 220
[[UIColor blueColor] set];
[staffPos2 drawAtPoint:CGPointMake(303, 12) withFont:hourfont];
[[UIColor magentaColor] set];
[staffPos3 drawAtPoint:CGPointMake(523, 12) withFont:hourfont];
[[UIColor redColor] set];
[staffPos4 drawAtPoint:CGPointMake(743, 12) withFont:hourfont];
[[UIColor blueColor] set];
[staffPos5 drawAtPoint:CGPointMake(963, 12) withFont:hourfont];
[[UIColor magentaColor] set];
[staffPos6 drawAtPoint:CGPointMake(1183, 12) withFont:hourfont];
}
Мой вопрос: я должен делать что-то другое, используя методы рисования CG? Левая сетка, верхняя сетка и центральная сетка все рисуются одинаково. Цвет фона находится на UIView ниже рисунка. Единственными ограничениями для верхней сетки являются ширина и высота.