程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> objective c-actionSheet imageView的邊界

objective c-actionSheet imageView的邊界

編輯:編程綜合問答
actionSheet imageView的邊界

需要在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*88px的,我需要圖片像imageView是25*25px的邊框。不知道應該怎麼實現?

最佳回答:


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

用這段代碼,可以隨意修改框架尺寸,還可以創建不帶虛擬按鈕的actionsheet。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved