Khi bạn thử xóa ghi chú trong ứng dụng Ghi chú của iPhone, một UIActionSheet sẽ bật lên. Các tờ là mờ (nhưng không màu đen mờ). Làm thế nào là đạt được? Có thể tạo nền của UIActionSheet một màu nhất định không?Phát triển iPhone: Cách tạo nền màu hoặc mờ cho UIActionSheet?
Trả lời
tôi thường thực hiện các phương pháp đại biểu sau đây:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
Chỉ cần để thực hiện một mẫu. Trong trường hợp này tôi sử dụng một trải png làm nền:
- (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];
}
và đây là kết quả: alt text http://grab.by/4yF1
Trông màu đen với tôi (lưu ý: sử dụng 2.2.1). Lý do duy nhất có màu sắc là do màu vàng phía sau nó.
Một tùy chọn sẽ là sử dụng nền trong suốt màu đen và tìm hiểu kích thước và tốc độ của trang tính. Sau đó, tạo một khung nhìn và tạo hiệu ứng nó trong cùng lúc bạn hiển thị trang tính hành động, ngay bên dưới nó, để cho nó có màu sắc khác với màu tự nhiên đằng sau trang tính hành động. Bạn sẽ phải làm cho xem màu sắc cũng mờ để bạn có thể thấy đằng sau đó là tốt.
Tôi không chắc chắn nếu bạn có thể, nhưng bạn cũng có thể thử điều chỉnh độ mờ của bản thân hành động.
Điều chỉnh độ mờ đục của bảng tác vụ cũng ảnh hưởng đến các nút. – Boon
Nếu bạn nhìn vào ứng dụng ghi chú, bạn sẽ nhận thấy rằng các nút không bị mờ đục 100%. –
Bạn chắc chắn có thể điều chỉnh độ mờ bằng cách đặt giá trị alpha. Interface Builder cho phép bạn chỉnh sửa các giá trị trực tiếp, nhưng trong mã Tôi nghĩ rằng bạn sẽ làm gì:
[[myActionSheet view] setOpaque:NO];
[[myActionSheet view] setAlpha:0.5];
Tôi không chắc chắn nếu bạn cần gọi setOpaque hay không - Tôi nghĩ rằng được sử dụng để giúp tối ưu hóa hiệu suất, như iPhone sẽ không cố gắng hiển thị mọi thứ bị ẩn theo chế độ xem mờ.
Không quá khó. Bạn có thể sử dụng mã sau:
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];
Chỉ cần đảm bảo bạn trình bày UIActionSheet trước khi thực hiện việc này hoặc kích thước sẽ không được đặt. Điều đó làm cho nó loại xấu xí, nhưng bạn có thể làm điều gì đó như:
[myActionSheet showInView:self.view];
if (!redAdded) {
redAdded = YES;
//THE ABOVE CODE GOES HERE
}
Nếu bạn đã giới hạn kích thước cho chế độ xem, bạn sẽ không phải thực hiện phần sau. Cũng phải thay thế x và y bằng chiều cao và chiều rộng: CGSize mySize = self.view.bounds.size; CGRect myRect = CGRectMake (0, 0, mySize.height, mySize.width); – StuartM
Sử dụng - (void) willPresentActionSheet: (UIActionSheet *) actionSheet là một móc tốt hơn nói chung –
Bạn cũng có thể sử dụng hình ảnh thay vì màu bằng cách đặt UIImage thành UIImageView: [actionBackground setImage: [UIImage imageNamed: @ "captainplanet. png "]]; – ninehundredt
Bạn có thể sử dụng đoạn mã sau:
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackOpaque;
hoặc
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;
Cảm ơn, đây chính xác là những gì tôi đang tìm kiếm – GeneCode
actionSheetObj.actionSheetStyle=UIActionSheetStyleBlackTranslucent;
Bạn có thể vui lòng đăng liên kết tới hình ảnh đó không?Nó trông rất đẹp, cảm ơn và giải pháp tuyệt vời để thay thế hình nền! – JonasG
điều này không làm việc cho tôi !!! – Fay007