Я видел некоторые приложения для iPhone, которые используют пользовательское изображение в качестве фона для сгруппированного UITableView вместо стандартных серых линий.
Как это достигается?
Я видел некоторые приложения для iPhone, которые используют пользовательское изображение в качестве фона для сгруппированного UITableView вместо стандартных серых линий.
Как это достигается?
В другом проекте (разработанном с использованием 2.2.1) я сделал это, установив мою непрозрачность фона UITableView'
на 0%, а затем просто разместив UIImageView
за ней с помощью Interface Builder. Это позволило мне иметь фиксированный фон независимо от состояния таблицы. Вы также можете установить фон UITableView
вместо изображения, но затем фон прокручивается вместе с таблицей. (На данный момент у меня нет кода, но я получил подсказку некоторое время на форумах разработчиков Apple).
Обратите внимание, что это может вызвать некоторые проблемы с производительностью. Apple не рекомендует использовать прозрачность, когда это возможно, потому что графические процессоры на моделях до 3GS не особенно плотны.
Вот что сработало для меня (и довольно просто, как только я понял это;)
1) Добавьте представление в свой делегат приложения и сделайте его подвид окна:
UIView *bgView = [[UIView alloc]initWithFrame:window.frame];
bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];
[window addSubview:bgView];
[bgView release];
2). В каждом файле диспетчера .m в представлении ViewDidLoad задайте цвет фона этого конкретного вида прозрачным (так будет отображаться другой созданный выше bgView):
self.view.backgroundColor = [UIColor clearColor];
И в моем случае контроллер представления на шаге 2 был контроллером tableview. Выглядит отлично.
И BTW, делая следующее в каждом представлении, контроллер НЕ работал хорошо:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];
Итак, выполните шаги 1 и 2 выше.
Надеюсь, что это поможет, TBone
Попробуйте это
- (void) viewDidLoad {
[super viewDidLoad];
self.tableView.backgroundColor = [UIColor clearColor];
self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"wallpaper.png"]];
self.tableView.opaque = NO;
}
Вы можете использовать метод +[UIColor colorWithPatternImage:(UIImage)]
следующим образом:
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
проблема с colorWithPatternImage: это то, что вам нужно использовать "узорные" изображения, иначе ваше изображение будет разбито случайным образом
У этой ссылки есть простое решение, если вы хотите, чтобы все ваши представления имели один и тот же фон
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SortByCategory_320x480.png"]];
self.tableView.separatorColor = [UIColor clearColor];
self.tableView.backgroundColor = [UIColor clearColor];
Надеюсь, это поможет. Он не будет отображать отвратительный полупрозрачный фон за ячейками, особенно в случае Grouped UITableView.