>>> NewType = type("NewType", (object,), {"x": "hello"})
>>> n = NewType()
>>> n.x
"hello"
, который является точно тем же как
>>> class NewType(object):
>>> x = "hello"
>>> n = NewType()
>>> n.x
"hello"
, Вероятно, не самая полезная вещь, но хороший знать.
Редактирование : Фиксированное название нового типа, должен быть NewType
, чтобы быть той же самой вещью как с class
оператор.
Редактирование : Скорректированный заголовок, чтобы более точно описать функцию.
Обычно я реализую следующий метод делегата:
- (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];
}
и вот результат: alt text http://grab.by/4yF1
Мне он кажется черным (примечание: с использованием 2.2.1). Единственная причина, по которой он имеет цвет, - это желтый цвет за ним.
Один из вариантов - использовать черный прозрачный фон и узнать размер и скорость листа действий. Затем создайте представление и анимируйте его в то же самое время, когда вы показываете лист действий, прямо под ним, чтобы придать ему оттенок, отличный от естественного цвета за листом действий. Вам нужно будет сделать цветной вид также полупрозрачным, чтобы вы могли видеть и за ним.
Я не уверен, сможете ли вы, но вы также можете попробовать настроить непрозрачность самого листа действий.
Вы определенно можете настроить непрозрачность, установив значение альфа. Interface Builder позволяет вам редактировать значение напрямую, но в коде, я думаю, вы бы это сделали:
[[myActionSheet view] setOpaque:NO];
[[myActionSheet view] setAlpha:0.5];
Я не уверен, нужен ли вам вызов setOpaque или нет - я думаю, он используется для оптимизации производительности, поскольку iPhone победил » Я пытаюсь отрендерить что-нибудь, что скрыто за непрозрачным видом.
Это не слишком сложно. Вы можете использовать следующий код:
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];
Просто убедитесь, что вы представляете UiabaccesHeet, прежде чем делать это или размер не будет установлен. Это делает это уродливым, но вы могли бы сделать что-то вроде:
[myActionSheet showInView:self.view];
if (!redAdded) {
redAdded = YES;
//THE ABOVE CODE GOES HERE
}
Вы можете использовать следующий код:
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackOpaque;
или
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;