2013-04-18 2 views
0

мне нужно изменить границы ImageView собственности на ActionSheet,Как установить границы действияSheet 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 px, как и для рамки изображения, которое я установил. Может ли кто-нибудь мне помочь?

ответ

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); 
    } 
} 

Это рабочий код .. Проверьте с этим. Вы можете изменить размер рамки по своему желанию ... Вы можете создать таблицу действий без манекена ...