2015-07-13 3 views
0

Я хочу создать идеальный полукруг в нижней части моего представления, и теперь я получаю только дугу в верхней части прямоугольника (см. Прилагаемое изображение). Это код, я использую следующую команду, где circularRect происхождения = (х = 128, у = 514), размер = (ширина = 64, высота = 54)Создайте полукруг с графикой ядра

CGFloat arcHeight = 60.0; 
    CGRect arcRect = CGRectMake(circularRect.origin.x, circularRect.origin.y + circularRect.size.height - arcHeight, circularRect.size.width, arcHeight); 

    CGFloat arcRadius = 60; 
    CGPoint arcCenter = CGPointMake(arcRect.origin.x + arcRect.size.width/2, arcRect.origin.y + arcRadius); 

    CGFloat angle = acos(arcRect.size.width/(2*arcRadius)); 
    CGFloat startAngle = 270 * M_PI/180 + angle; 
    CGFloat endAngle = 90 * M_PI/180 - angle; 

    CGContextAddArc(context, arcCenter.x, arcCenter.y, arcHeight, startAngle, endAngle, 1); 
    CGContextClip(context); 
    CGContextClearRect(context, arcRect); 
    CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor); 
    CGContextFillRect(context, arcRect); 

enter image description here

Что Я поступаю неправильно? Благодаря!

ответ

0

Радиус, который вы подаете на функцию дуги, слишком велик. Ваша ширина прямоугольника равна 64, вы можете установить только круг с радиусом 32 или менее.

Смежные вопросы