небольшая проблема с моим пользовательским подклассом UIButton при добавлении в contentView объекта UITableViewCell.в основном, класс кнопки добавляет CAGradientLayer в свой конструктор для создания глянцевого фона:
CALayer *layer = self.layer;
layer.cornerRadius = self.frame.size.height/6;
layer.masksToBounds = YES;
layer.borderWidth = 1.0f;
layer.borderColor = [UIColor colorWithRed:0.0
green:0.0
blue:0.0
alpha:.75].CGColor;
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = [NSArray arrayWithObjects:
(id)[UIColor colorWithWhite:1.0f alpha:0.4f].CGColor,
(id)[UIColor colorWithWhite:1.0f alpha:0.2f].CGColor,
(id)[UIColor colorWithWhite:0.75f alpha:0.2f].CGColor,
(id)[UIColor colorWithWhite:0.4f alpha:0.2f].CGColor,
(id)[UIColor colorWithWhite:1.0f alpha:0.4f].CGColor,
nil];
gradientLayer.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.8f],
[NSNumber numberWithFloat:1.0f],
nil];
gradientLayer.frame = self.layer.bounds;
[self.layer addSublayer:gradientLayer];
, это прекрасно работает везде в приложении, за исключением случая, когда я просто пытался добавить эту кнопку как подпредставление UITableViewCell:
myButton = [[MyButton alloc] initWithFrame:CGRectZero];
[self.contentView addSubview:oddsButton];
И выложено в layoutSubviews:
- (void)layoutSubviews {
[super layoutSubviews];
CGRect rect;
rect.size.height = 30;
rect.size.width = 60;
rect.origin.x = self.frame.size.width - rect.size.width - 20;
rect.origin.y = self.frame.size.height/2 - rect.size.height/2;
myButton.frame = rect;
}
Кнопка отображается нормально, но слой не отображается вообще - я просто получаю прямоугольную кнопку однотонного цвета.Я также попытался вручную изменить размер слоя в layoutSubviews, но это не имеет значения.Казалось бы, это предполагает, что весь кварцевый рисунок игнорируется в ячейке табличного представления.в качестве альтернативы я рассмотрел добавление глянца в качестве подпредставления кнопки, и это работает, но отображается поверх обычного вида кнопки / надписей / и т. д., поэтому кажется не совсем идеальным.