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

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

Ответы на вопрос(6)

actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackOpaque;

или же

actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;
 27 нояб. 2012 г., 09:14
Спасибо, это именно то, что я искал

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

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

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

 Boon26 июл. 2009 г., 07:59
Регулировка непрозрачности листа действий также влияет на кнопки.
 27 июл. 2009 г., 00:45
Если вы посмотрите на приложение заметок, вы заметите, что кнопки не на 100% непрозрачны.
Решение Вопроса

- (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

 10 мая 2016 г., 09:11
это не работает для меня !!!
 19 мар. 2012 г., 20:26
Эй, не могли бы вы опубликовать ссылку на это изображение? Выглядит очень красиво, спасибо и отличное решение для замены фонового изображения!
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;

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
}
 18 окт. 2012 г., 18:48
Если вместо этого вы привязали размер к представлению, вам не пришлось бы выполнять более позднюю часть. Также пришлось заменить x и y на высоту и ширину: CGSize mySize = self.view.bounds.size; CGRect myRect = CGRectMake (0, 0, mySize.height, mySize.width);
 01 нояб. 2012 г., 01:47
Использование - (void) willPresentActionSheet: (UIActionSheet *) actionSheet в целом является лучшим хуком
 20 февр. 2013 г., 16:01
Вы также можете использовать изображение вместо цвета, задав UIImage для UIImageView: [actionBackground setImage: [UIImage imageNamed: @ & quot; captainplanet.png & quot;]];

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

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

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

 Boon26 июл. 2009 г., 07:59
Регулировка непрозрачности листа действий также влияет на кнопки.
 27 июл. 2009 г., 00:45
Если вы посмотрите на приложение заметок, вы заметите, что кнопки не на 100% непрозрачны.

Ваш ответ на вопрос