如何自定义UIActionSheet中的内容
来源:互联网 发布:国家安全法 网络窃密 编辑:程序博客网 时间:2024/04/30 01:01
解决的办法是继承它,实现一个自定义类,重载layoutSubviews函数。
#import <UIKit/UIKit.h>
@interface UIImageActionSheet :UIActionSheet
{
UIImage *titleImage;
}
-(id)initWithImage:(UIImage *)image title:(NSString *)title delegate:(id<UIActionSheetDelegate>)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles;
@end
#import "UIImageActionSheet.h"
@implementation UIImageActionSheet
- (id)initWithFrame:(CGRect)frame
{
self = [superinitWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
-(id)initWithImage:(UIImage *)image title:(NSString *)title delegate:(id<UIActionSheetDelegate>)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles
{
self = [superinitWithTitle:title delegate:delegate cancelButtonTitle:cancelButtonTitledestructiveButtonTitle:destructiveButtonTitle otherButtonTitles:otherButtonTitles,nil];
if (self)
{
titleImage = image;
[titleImageretain];
UIImageView *imageView = [[UIImageViewalloc] initWithImage:titleImage];
imageView.frame =CGRectZero;
for (UIView *subViewin self.subviews)
{
if(![subView isKindOfClass:[UILabelclass]])
{
[selfinsertSubview:imageView aboveSubview:subView];
break;
}
}
[imageViewrelease];
}
return self;
}
-(CGFloat)maxLabelYCoordinate
{
CGFloat maxY = 0;
for (UIView *viewin self.subviews)
{
if ([view isKindOfClass:[UILabelclass]])
{
CGRect viewFrame = [view frame];
CGFloat lowerY = viewFrame.origin.y + viewFrame.size.height;
if (lowerY > maxY)
{
maxY = lowerY;
}
}
}
return maxY;
}
-(void)layoutSubviews
{
[superlayoutSubviews];
CGRect frame = [selfframe];
CGFloat labelMaxY = [selfmaxLabelYCoordinate];
for(UIView *viewin self.subviews){
if (![view isKindOfClass:[UILabelclass]]) {
if([view isKindOfClass:[UIImageViewclass]]){
CGRect viewFrame = CGRectMake((320 - titleImage.size.width)/2, labelMaxY +10,
titleImage.size.width,titleImage.size.height-30);
[viewsetFrame:viewFrame];
}
else if(![viewisKindOfClass:[UIImageViewclass]]) {
CGRect viewFrame = [view frame];
viewFrame.origin.y +=titleImage.size.height+10;
[viewsetFrame:viewFrame];
}
}
}
frame.origin.y -=titleImage.size.height +2.0;
frame.size.height +=titleImage.size.height +2.0;
[selfsetFrame:frame];
}
-(void)dealloc
{
[superdealloc];
if (titleImage)
{
[titleImagerelease];
}
}
@end
使用:
UIImage *img = [UIImageimageNamed:@"baidu_sylogo1.gif"];
UIImageActionSheet *imageActionSheet = [[UIImageActionSheetalloc] initWithImage:img
title:@"添加的图案可用以下方式"
delegate:self
cancelButtonTitle:@"OK"
destructiveButtonTitle:nil
otherButtonTitles:nil];
//在开发过程中,发现有时候UIActionSheet的最后一项点击失效,点最后一项的上半区域时有效,这是在特定情况下才会发生,这个场景是试用了UITabBar的时候才有。解决方法
[imageActionSheetshowInView:self.view.window];
//让动态添加的按钮在取消按钮之上
//[imageActionSheet addButtonWithTitle:@"知道了"];
//[imageActionSheet addButtonWithTitle:@"OK"];
//[imageActionSheet addButtonWithTitle:NSLocalizedString(@"取消", @"cancel button title")];
//imageActionSheet.cancelButtonIndex = imageActionSheet.numberOfButtons - 1;
[imageActionSheetrelease];
- 如何自定义UIActionSheet中的内容
- 如何自定义UIActionSheet(UIAlertView)中的内容
- 如何自定义UIActionSheet(UIAlertView)中的内容
- 如何自定义UIActionSheet(UIAlertView)中的内容
- iOS开发之如何自定义UIActionSheet(UIAlertView)中的内容
- 自定义UIActionSheet
- 自定义UIActionSheet
- UIActionsheet 自定义
- 自定义UIActionSheet
- 自定义UIActionSheet
- 自定义UIActionSheet
- 如何自定义格式,使单元格中的内容更改颜色?
- 安卓 如何自定义 AlertDialog 控件中的内容
- iOS 自定义UIActionSheet
- 定制UIActionSheet中的按钮
- IOS开发之自定义UIActionSheet
- iPhone开发之自定义UIActionSheet
- IOS开发之自定义UIActionSheet
- “素数”的几种求法的实现与比较 .
- 增加字段
- 小宝,小宝,我爱你
- 编码规范
- 身份证、组织机构代码及营业执照号校验函数
- 如何自定义UIActionSheet中的内容
- python 文件锁总结
- java验证格式(正则表达式)
- android主要类解析 Activity ,Intent ,IntentReceiver,Service ,ContentProvider 介绍
- 避免网络应用死机,崩溃,保证服务质量的一般方法
- 如何设置ListViewCtrl的最小列宽(How to set a minimum column width)
- 精明的程序员——堆栈和队列的相互转换
- 运算符的重载---sort和unique
- 风柔月清,吾爱在浅秋