我需要在ActionSheet上更改imageView属性的边界,
<!-- language: lang-c -->
#pragma UIActionSheetDelegate Methods
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
/*[[[actionSheet valueForKey:@"_buttons"] objectAtIndex:0] imageView].frame = CGRectMake(0, 0, 25.0f, 25.0f);*/
[[[actionSheet valueForKey:@"_buttons"] objectAtIndex:0] imageView].bounds = CGRectMake(0, 0, 25.0f, 25.0f);
/*UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 25.0f, 25.0f)];
imgView.image = [UIImage imageNamed:@"symbol-pin.png"];
[[actionSheet superview] addSubview:imgView];*/
}
编码后没有任何事情发生:
[[[actionSheet valueForKey:@"_buttons"] objectAtIndex:0] imageView].bounds = CGRectMake(0, 0, 25.0f, 25.0f);
这里是创建ActionSheet的代码
<!-- language: lang-c -->
- (IBAction)showModeOptions:(id)sender {
if (!modeOptions) {
modeOptions = [[UIActionSheet alloc]initWithTitle:@"" delegate:self cancelButtonTitle:@"Abbrechen" destructiveButtonTitle:nil otherButtonTitles:@"Pin",@"Linie", @"Polygon", nil];
[[[modeOptions valueForKey:@"_buttons"] objectAtIndex:0] setImage:[UIImage imageNamed:@"symbol-pin.png"] forState:UIControlStateNormal];
[[[modeOptions valueForKey:@"_buttons"] objectAtIndex:1] setImage:[UIImage imageNamed:@"symbol-line.png"] forState:UIControlStateNormal];
[[[modeOptions valueForKey:@"_buttons"] objectAtIndex:2] setImage:[UIImage imageNamed:@"symbol-polygon.png"] forState:UIControlStateNormal];
modeOptions.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
}
[modeOptions showFromTabBar:self.tabBarController.tabBar];
}
图像为88 x 88px,优惠代码后的结果为:
http://i46.tinypic.com/v4ck20.png
我需要25 x 25像素的图像,就像我设置的imageView的边界一样。 有人能帮助我吗?
答案 0 :(得分:0)
使用以下代码..
-(void)actionSheetClicked
{
if(!self.modeOptions)
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Dummy",nil]; //Here I add dummy button for getting cancel button style.
self.modeOptions = actionSheet;
[actionSheet release];
}
self.modeOptions.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[self.modeOptions showFromTabBar:self.tabBarController.tabBar];//Here i show from tab bar, you can showfromview also
// [self.modeOptions setBounds:CGRectMake(0, 0, 320, 300)];
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait ||
orientation == UIInterfaceOrientationPortraitUpsideDown)//frame size for action sheet in both modes
{
[self.modeOptions setBounds:CGRectMake(0, 0, 320, 300)];
}
else
{
[self.modeOptions setBounds:CGRectMake(0, 0, 480,250)];
}
UIButton *buttonDum = (UIButton *)[[self.modeOptions subviews] objectAtIndex:0];
[buttonDum setHidden:YES];//hide dummy button..
UIButton *cancelButton = (UIButton *)[[self.modeOptions subviews] objectAtIndex:1];
if( !self.button1)
{
UIButton *Btn = [[UIButton alloc]initWithFrame:CGRectMake(80, 40, 70, 70)];//**Here I use 70 X 70 px image , you can edit it**
self.button1 = Btn;
[self.button1 addTarget:self action:@selector(invokeFirstBtn) forControlEvents:UIControlEventTouchUpInside];
[self.button1 setImage:[UIImage imageNamed:@"btn1Image.png"] forState:UIControlStateNormal];
[self.modeOptions addSubview:self.button1];
[Btn release];
}
if( !self.button2)
{
UIButton *Btn = [[UIButton alloc]initWithFrame:CGRectMake(180, 40, 70, 70)];//**Here I use 70 X 70 px image , you can edit it**
self.button2 = sharBtn;
[self.button2 addTarget:self action:@selector(invokeButton2) forControlEvents:UIControlEventTouchUpInside];
[self.button2 setImage:[UIImage imageNamed:@"btn2Image.png"] forState:UIControlStateNormal];
[self.modeOptions addSubview:self.button2];
[Btn release];
}
if (orientation == UIInterfaceOrientationPortrait ||
orientation == UIInterfaceOrientationPortraitUpsideDown)//frame size for action sheet in both modes
{
cancelButton.frame = CGRectMake(50, 140, 220, 40);
self.button1.frame = CGRectMake(65, 40, 70, 70);
self.button2.frame = CGRectMake(175, 40, 70, 70);
}
else
{
cancelButton.frame = CGRectMake(135, 140, 220, 40);
self.button1.frame = CGRectMake(155, 40, 70, 70);
self.button2.frame = CGRectMake(260, 40, 70, 70);
}
}
这是有效的代码..请查看此内容。您可以根据需要更改帧大小...您可以创建没有虚拟按钮的动作表...