градиентный фон для UITableView - PullRequest
4 голосов
/ 31 января 2012

У меня проблемы с созданием простого градиента для UITableView, работающего с некоторым кодом консультанта. Когда кнопка нажата, появляется всплывающее окно. Во всплывающем окне у меня есть навигационный контроллер, и его rootViewController - мой пользовательский класс. Мой класс обладает этими свойствами

@interface TargetDetailView : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
    CGGradientRef backgroundGradient;
    UITableView *_targetTableView;
}

@property (retain, nonatomic) IBOutlet UIGradientView *backgroundView;
@property (nonatomic, retain) IBOutlet UITableView *TargetTableView;

в viewDidLoad, я делаю это:

CGColorSpaceRef gray = CGColorSpaceCreateDeviceGray();
    backgroundGradient = CGGradientCreateWithColors(gray, (CFArrayRef)[NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:70./255 alpha:1] CGColor], (id)[[UIColor colorWithWhite:35./255 alpha:1] CGColor], nil], nil);
    CGColorSpaceRelease(gray);
    [self.backgroundView setGradient:backgroundGradient];

Для моих ячеек backgroundView установлено значение [UIColor clearColor]. Кроме того, у моего tableView в IB задан фон [UIColor clearColor]. Однако, когда я представляю свой поповер, я не вижу градиента. В IB иерархия - это свойство класса .view, затем выход backgroundView и UITableView внутри этого представления.

Я пытался найти и другие способы устранения неполадок, например, полное избавление от градиента и размещение tableView в качестве единственного элемента в свойстве класса .view. Тогда я просто попробую self.backgroundColor = [UIColor orangeColor];

и я не вижу никаких цветов. Все выглядит серым. Что я делаю неправильно? Спасибо.

1 Ответ

7 голосов
/ 31 января 2012

вот код, который я использовал для градиента для UILable, он одинаков для всех UIViews:

gradient = [CAGradientLayer layer];
gradient.frame = lbl_change.bounds;

//Blue Color
gradient.colors = [NSArray arrayWithObjects:(id)[UIColorFromRGB(0x2B60DE) CGColor],    (id)[UIColorFromRGB(0x2554C7) CGColor], nil];

[lbl_change.layer insertSublayer:gradient atIndex:0];

Я добавил градиент для слоя, а также убедитесь, что вы установили рамку дляваш градиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...