2011-05-18 3 views
0

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

Вот мой код:

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

+0

Вы говорите о том, что тень, на поверхности ниже, появляется меньше, чем объект, из которого броска? I.e., перспектива? –

+0

@Abnihav, пытались ли вы увеличить shadowRadius? – Zapko

+0

@Josh: Правильно. – Abhinav

ответ

2

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

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]; 

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

0

Одно решение, которое я мог думать и работать также, чтобы настроить рамку мнение, путем 2 пикселя в положении X и ширине:

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

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

1

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

view.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, view.frame.size.width+30, view.frame.size.height)].CGPath; 
+0

Это работает, когда я устанавливаю отрицательную позицию X (-2.0) и увеличиваю ширину на 4.0 пикселя. Как я ответил в своем ответе. – Abhinav

0

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

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