Если вы используете свойство layer вашего вида с прокруткой (или любого UIView), вы можете легко получить сплошную границу ...
#import <QuartzCore/QuartzCore.h>
...
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
Вы также можете использовать слой для нанесения теней в реальном времени, установив свойства layer.shadow*
, но производительность может быть низкой при использовании этой техники, поэтому я обычно предпочитаю использовать следующую более сложную, но более производительную технику. Вы можете создать изображение в формате PNG с прозрачностью в середине и тенями по краю - оно должно иметь 9 различных областей: 4 для каждого угла, 4 для каждого края и полностью прозрачную область пикселей 1x1 в середине. Например, если ваша тень распространяется на изображение на 6 пикселей, ваше изображение будет 13x13 с границами шириной 6 пикселей / максимум и областью 1x1 посередине. Затем вы устанавливаете его как масштабируемое изображение, используя:
newImage = [image stretchableImageWithLeftCapWidth:6 topCapHeight:6];
ОБНОВЛЕНИЕ: Поскольку iOS 5.0 stretchableImageWithLeftCapWidth:topCapHeight:
устарела, используйте его, только если вы все еще хотите поддерживать устройства iOS 4.x. Если вы хотите поддерживать только устройства iOS 5.0+, используйте это вместо:
newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)];
Затем вы помещаете изображение в родительский вид, чтобы оно занимало всю область вида прокрутки. Если вы хотите, чтобы тени выходили за рамки прокручиваемых элементов (чтобы ваш вид прокрутки выглядел как вставка / позади остальной части страницы), поместите прозрачный UIView поверх изображения теней, чтобы он был виден при просмотре прокрутки. за этим.