У меня ошибка с тенью при изменении размера контроллера модального вида
Я хочу изменить размер и изменить модальный вид. Изменение размера работает хорошо. Перестановка не работает. Есть ошибка с тенью. Пожалуйста, смотрите скриншот номер два. Можно ли опустить тень?
-(IBAction) onModal:(id)sender
{
UINavigationController *nav = [[UINavigationController alloc] init];
nav.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:nav animated:YES completion:nil];
nav.view.superview.bounds = CGRectMake(0, 0, 200, 200);
}
nav.view.superview.bounds = CGRectMake(0, -200, 200, 200);
1 ответ
Решение
Вы можете перемещать тень, устанавливая атрибут shadowPath слоя представления.
// be sure to include this and to link your app against it.
#import <QuartzCore/QuartzCore.h>
...
// UIBezierPath has nice convenience methods for creating rounded rectangles.
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0.f, 0.f, 200.f, 200.f) cornerRadius:4.f];
// Transform the path to your heart's content
[shadowPath applyTransform:CGAffineTransformMakeTranslation(0.f, 200.f)];
// use the CGPath method to get a CGPathRef for the layer's shadowPath
nav.view.superview.layer.shadowPath = shadowPath.CGPath;
примечание: в качестве альтернативы вы можете создать UIBezierPath со смещением, которое вам нужно, вместо преобразования в качестве второго шага.