Проблема с добавлением тени для просмотра слоя - PullRequest
0 голосов
/ 18 мая 2011

В одном из моих представлений я добавляю тень к представлению. Дело в том, что тень показывает пробелы на левом и правом краях. Я хочу удалить эти пробелы.

Вот мой код:

UIView *myView = [[ISTView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 35)];
myView.backgroundColor = [UIColor greyColor];
[myView.layer setShadowOffset:CGSizeMake(0.0, 5.0)];
[myView.layer setShadowOpacity:0.8];
[myView.layer setShadowRadius:2.0];
[myView.layer setShadowColor:[UIColor blackColor].CGColor];
[self.view addSubview:myView];
[myView release];

Вот мое мнение о / п:

enter image description here

Ответы [ 4 ]

2 голосов
/ 18 мая 2011

Если вам нужна однородная тень без побочных эффектов, вы можете нарисовать ее в графическом редакторе, сохранить в png и разместить UIImageView с растягиваемым изображением на вашем виде. И не забудьте установить для clipToBounds значение NO.

UIView *myView = [[ISTView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 35)];
myView.backgroundColor = [UIColor greyColor];
myView.clipToBounds = NO;

UIImageView *shadowView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 35, 320, 10)];
shadowView.image = [UIImage imageWithName:@"my-shadow.png"];
[myView addSubview:shadowView];
[shadowView release];

[self.view addSubview:myView];
[myView release];

Системе было бы дешевле нарисовать кэшированное существующее изображение выше иерархии представления, чем рассчитать тень слоя.

1 голос
/ 18 мая 2011

Используйте shadowPath, чтобы сделать тень больше, чем вид

view.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, view.frame.size.width+30, view.frame.size.height)].CGPath;
0 голосов
/ 24 февраля 2014

Попробуйте, удалите код: [myView.layer setShadowRadius:2.0];

0 голосов
/ 18 мая 2011

Единственное решение, которое я мог бы придумать и работает, - это отрегулировать рамку вида на 2 пикселя в позиции и ширине X:

UIView *myView = [[ISTView alloc] initWithFrame:CGRectMake(-2.0, 0.0, 324.0, 35)];

Но это не более чистый подход к этому. Если у кого-то есть лучшее решение, пожалуйста, руководство.

...