iOS: сделать слой непрозрачным без выцветания текста - PullRequest
0 голосов
/ 03 февраля 2012

У меня на UIView есть рамка со слоем. У меня есть слой, устанавливающий цвет фона, альфа 0.5 и frame.backgroundColor = clearColor, чтобы люди могли видеть линии позади него. Однако это делает подпредставления, которые содержат текст, также затухшими. Как мне это предотвратить?

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self setAlpha:kAlpha];
        CALayer *layer = [self layer];
        [layer setMasksToBounds:YES];
        [layer setBackgroundColor:[UIColor redColor].CGColor];
        [layer setCornerRadius:kCornerRadius];
    }
    return self;
}

- (id)init
{
    if (self = [super init]) {
        self.clipsToBounds = YES;
        self.userInteractionEnabled = YES;
        self.multipleTouchEnabled = NO;

        tileTitle = [[UILabel alloc] init];
        tileTitle.textColor = [UIColor blackColor];
        tileTitle.backgroundColor = [UIColor clearColor];
        tileTitle.font = [UIFont boldSystemFontOfSize:13.0f];

        tileDescription = [[UILabel alloc] init];
        tileDescription.textColor = [UIColor blackColor];
        tileDescription.backgroundColor = [UIColor clearColor];
        tileDescription.font = [UIFont systemFontOfSize:11.0f];
        tileDescription.lineBreakMode = UILineBreakModeTailTruncation;

        [self addSubview:tileTitle];
        [self addSubview:tileDescription];
    }

    return self;
}

Screenshot

Ответы [ 3 ]

3 голосов
/ 03 февраля 2012

Чтобы изменить прозрачность представления, но не его подпредставлений, вы можете изменить цвет фона:

myView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.25];

Этот метод также работает с CALayer.

1 голос
/ 03 февраля 2012

Вы не должны устанавливать альфа-значение для всех видов, вы должны выбрать цвет с помощью альфа.

    [self.view setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]];
0 голосов
/ 03 февраля 2012

Используйте подпредставление (с тем же размером, что и ваш UIView) и установите цвет и альфа на подпредставлении в соответствии с желаемой прозрачностью, а не устанавливайте альфу вашего вида. Установите backgroundColor UIView верхнего уровня в clearColor.

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