Вопрос по iphone, uikit – Разработка для iPhone: Как создать цветной или полупрозрачный фон для UIActionSheet?

9

Когда вы пытаетесь удалить заметку в приложении Notes для iPhone, появляется всплывающее окно UIActionSheet. Лист прозрачный (но не черный прозрачный). Как это достигается? Можно ли сделать фон UIActionSheet определенного цвета?

Ваш Ответ

6   ответов
0

использование 2.2.1). Единственная причина, по которой он имеет цвет, состоит в желтом цвете позади него.

Один из вариантов - использовать черный прозрачный фон и узнать размер и скорость листа действий. Затем создайте вид и анимируйте его, в то время как вы покажете лист действий под ним, чтобы придать ему оттенок, отличный от цвета, естественным образом лежащего за листом действий. Вы должны были бы сделать цветное изображение также прозрачным, чтобы вы могли видеть за этим также.

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

Если вы посмотрите на приложение заметок, вы заметите, что кнопки не на 100% непрозрачны.
Регулировка непрозрачности листа действий также влияет на кнопки. Boon
24

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet

Просто чтобы сделать образец. В этом случае я использую растянутый PNG в качестве фона:

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
    UIImage *theImage = [UIImage imageNamed:@"detail_menu_bg.png"];    
    theImage = [theImage stretchableImageWithLeftCapWidth:32 topCapHeight:32];
    CGSize theSize = actionSheet.frame.size;
    // draw the background image and replace layer content  
    UIGraphicsBeginImageContext(theSize);    
    [theImage drawInRect:CGRectMake(0, 0, theSize.width, theSize.height)];    
    theImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    [[actionSheet layer] setContents:(id)theImage.CGImage];
}

и вот результат: альтернативный текст http://grab.by/4yF1

это не работает для меня !!!
Эй, не могли бы вы опубликовать ссылку на это изображение? Выглядит очень красиво, спасибо и отличное решение для замены фонового изображения!
5

CGSize mySize = myActionSheet.bounds.size;
CGRect myRect = CGRectMake(0, 0, mySize.width, mySize.height);
UIImageView *redView = [[[UIImageView alloc] initWithFrame:myRect] autorelease];
[redView setBackgroundColor:[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.5]];
[myActionSheet insertSubview:redView atIndex:0];

Просто убедитесь, что вы представляете UIActionSheet, прежде чем делать это, или размер не будет установлен. Это немного уродливо, но вы можете сделать что-то вроде:

[myActionSheet showInView:self.view];
if (!redAdded) {
    redAdded = YES;
    //THE ABOVE CODE GOES HERE
}
Вы также можете использовать изображение вместо цвета, задав UIImage для UIImageView: [actionBackground setImage: [UIImage imageNamed: @ & quot; captainplanet.png & quot;]];
Если вместо этого вы привязали размер к представлению, вам не пришлось бы выполнять более позднюю часть. Также пришлось заменить x и y на высоту и ширину: CGSize mySize = self.view.bounds.size; CGRect myRect = CGRectMake (0, 0, mySize.height, mySize.width);
Использование - (void) willPresentActionSheet: (UIActionSheet *) actionSheet в целом является лучшим хуком
1

установив альфа-значение. Интерфейсный Разработчик позволяет вам редактировать значение напрямую, но в коде, я думаю, вы бы сделали:

[[myActionSheet view] setOpaque:NO]; 
[[myActionSheet view] setAlpha:0.5];

Я не уверен, нужен ли вам вызов setOpaque или нет - я думаю, что он используется для оптимизации производительности, поскольку iPhone не будет пытаться отобразить что-либо скрытое непрозрачным представлением.

Регулировка непрозрачности листа действий также влияет на кнопки. Boon
Если вы посмотрите на приложение заметок, вы заметите, что кнопки не на 100% непрозрачны.
14

actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackOpaque;

или же

actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;
Спасибо, это именно то, что я искал
6
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;

Похожие вопросы