У меня есть два решения, которые могут помочь.Из-за закругленных углов, я думаю, вам придется применить эффект тени к ячейкам и расположить их так, чтобы тени не перекрывались по оси y.Итак ...
Решение 1 (сложное решение): Я думаю, что это решение может сработать, если вы анимируете cornerRadius или не уверены в точной форме сечения.клеток.Вы пробовали использовать shadowPath, как предлагает Ecarrion, но применяли его к своей пользовательской ячейке UITableView?Представьте себе путь для центральных ячеек (не сверху и снизу), который немного шире, чем ячейка на оси x, и короче на оси y.
Затем необходимо убедиться, что тень отбрасывается наверх и низ секции, не перекрывая каждую отдельную тень, верно?Таким образом, для верхней и нижней ячеек вы увеличиваете shadowPath по оси Y, скажем, на 4 пункта больше.Затем вы настраиваете свойство shadowOffset для этих ячеек, также на 4 точки по оси Y.Если shadowOffset центральной ячейки (0,0), то верхняя ячейка (0, -4), а нижняя ячейка (0,4).
Если бы это был я, я бы поставилразличные настройки размера и смещения в листе, так что я мог возиться с мелкими деталями, не редактируя код.Просто загрузите plist в словарь или пользовательский класс, а затем установите свои свойства, используя эти значения.Делает небольшие корректировки намного менее нервными.
РЕДАКТИРОВАТЬ: Выходя за рамки использования shadowPath, вы можете сделать составную ячейку для табличного вида с прозрачным фоновым слоем немного меньшим теневым слоем и еще меньшим слоем для добавления текста.и изображения.Слой тени основан на слое текста / изображения, может быть немного шире, выше, короче и т. Д. Примените размытие к этому слою, а затем замаскируйте его прямоугольной маской так, чтобы там, где заканчивается один слой тени, начинался следующий.С верхним и нижним слоями маска должна проходить вверх или вниз до самой высокой / самой низкой точки на оси y, на которой появляется эффект тени (вам все равно придется маскировать сторону, примыкающую к следующей ячейке).Это зависит от того, насколько далеко вы готовы пойти для достижения точного эффекта ... может быть, это даст вам больше боеприпасов.
Решение 2 (несколько более простое решение): Если выточно знать, каким будет значение cornerRadius в верхней и нижней ячейках, и единственное, что вы не обязательно знаете, это длину и / или ширину ячеек, вы можете использовать старый трюк «растянутый однопиксельный графический».
Сначала вы Photoshop / Gimp изображение для угловой тени.Если ширина всегда одинакова, это изображение может быть тенью для всей вершины ячейки.Это же изображение можно использовать для других углов или нижней части ячейки, повернув его.
Теперь хитрость.Возьмите 1 x 5 часть эффекта размытия или градиента, который вы использовали для угловой тени.Если ваш теневой эффект составляет 3 пикселя, сделайте это 1x3 и т. Д. Экспортируйте в PNG или предпочтительный формат и убедитесь, что, если вы поместите его край к краю углового изображения, он выравнивается ровно (размытие или градиент имеют те же значения цвета безвидимый шов).
Все ячейки получают слой рядом с видимой частью ячейки (слева и справа) с вашим изображением 1x5 в качестве содержимого слоя.Также может быть растянутый UIImageView, ваш выбор.Эти линии составляют левую и правую тени.
Поместите свои угловые тени в первую и последнюю ячейки в разделе - это могут быть разные пользовательские ячейки, или вы можете создать свою ячейку так, чтобы она получала свой индекс, передаваемый ей при создании, и упорядочивала себя соответствующим образом.Выровняйте боковые тени так, чтобы они начинались там, где заканчивается угловая тень, и простирались вниз до нижней части ячейки.Если вы также изменяете ширину ячеек, вы будете делать то же самое между двумя угловыми изображениями, растягивая градиент по оси X.
Хорошо, изображение говорит тысячу слов, так как мне кажется,чтобы толкнуть столько слов, вот изображение для иллюстрации: