Можно ли добавить стиль границы для UITableView? (Не BorderColor / BorderWidth) - PullRequest
5 голосов
/ 29 марта 2012

Можно ли добавить стиль границы в UITableView?

Не только цвет границы и ширина полосы.

Например, стиль бороздки с бороздками?

Ответы [ 5 ]

10 голосов
/ 29 марта 2012

Эй Вы можете задать границы для ваших просмотров, используя CALayer, который доступен в QuartzCore Framework

Следующая ссылка поможет вам понять CALayer в деталях.

Введение в CALayers Tutorial

Например, по ссылке выше,

// Import QuartzCore.h at the top of the file
#import <QuartzCore/QuartzCore.h>

// In viewDidLoad add the following lines
self.view.layer.backgroundColor = [UIColor orangeColor].CGColor;
self.view.layer.cornerRadius = 20.0;
self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20);


CALayer *sublayer = [CALayer layer];
sublayer.backgroundColor = [UIColor blueColor].CGColor;
sublayer.shadowOffset = CGSizeMake(0, 5);
sublayer.shadowRadius = 5.0;
sublayer.shadowColor = [UIColor blackColor].CGColor;
sublayer.shadowOpacity = 1.0;
sublayer.frame = CGRectMake(30, 30, 128, 192);
[self.view.layer addSublayer:sublayer];

Хотя приведенный выше код не даст вам точного рифленого эффекта. Но вы можете попробовать это.

7 голосов
/ 29 марта 2012

Попробовать этот код вам может помочь ....

Написанное на этом коде, по вашему мнению, загрузило методы и импортировало платформу QuartzCore в ваш файл .h или .m.

[myTBL.layer setBorderWidth: 1.0];
[myTBL.layer setCornerRadius:8.0f];
[myTBL.layer setMasksToBounds:YES];
[myTBL.layer setBorderColor:[[UIColor blackColor] CGColor]];

Удачного кодирования .....

5 голосов
/ 29 марта 2012

Самый гибкий способ - сделать ваш UITableView подпредставлением UIImageView и использовать растягиваемое изображение для визуализации стиля рамки. Вставьте ваш UITableView в UIImageView, чтобы обеспечить необходимое пространство для вашей границы со всех сторон.

Создайте маленькое квадратное изображение в виде PNG с прозрачным фоном и любым стилем гравировки, тени или границы.

Затем превратите его в растягиваемое изображение, используя метод ниже. Это берет имя изображения и возвращает растягиваемое изображение, которое сохранит ваш стиль при изменении его размера:

- (UIImage*)makeStretchableImageNamed:(NSString*)imageName
{
    UIImage *image = [UIImage imageNamed:imageName];
    CGSize size = image.size;
    image = [image stretchableImageWithLeftCapWidth:size.width / 2.0f topCapHeight:size.height / 2.0f];

    return image;
}

Используйте изображение, чтобы установить свойство image вашего UIImageView и установить для свойства contentMode значение UIViewContentModeScaleToFill.

3 голосов
/ 29 марта 2012

Что вы можете сделать, это получить изображение текстуры и поместить это изображение в UIImageView, а затем добавить TableView в ImageView, как будто оно показывает изображение со всех сторон ...

1 голос
/ 09 февраля 2013

Вы не можете установить стиль, но вы можете смоделировать шаблон как пунктирную линию, используя изображение шаблона и UIColor.

UIView *item;
item.layer.borderColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"checkerboard.png"]].CGColor;

Не забудьте добавить это к своим заголовкам:

#import <QuartzCore/QuartzCore.h>
...