adding a custom view to a alert view

前端 未结 3 777
长情又很酷
长情又很酷 2021-02-09 10:20

i have a problem like this:

i want to show a customized view inside a alert view. so i create a separate xib file and designed my interface.and implemented the class for

3条回答
  •  星月不相逢
    2021-02-09 10:44

    for all who having this problem, i have followed this link..and for the star marks, i used this..

    all you have to do is add below files to the project

    • CustomIOS7AlertView.h
    • CustomIOS7AlertView.m
    • JSFavStarControl.h
    • JSFavStarControl.m

    and put below code where you want to pop up the alert view

    // Here we need to pass a full frame
    CustomIOS7AlertView *alertView = [[CustomIOS7AlertView alloc] init];
    
    // Add some custom content to the alert view
    [alertView setContainerView:[self createDemoView]];
    
    // Modify the parameters
    [alertView setButtonTitles:[NSMutableArray arrayWithObjects:@"Close1", @"Close2", @"Close3", nil]];
    [alertView setDelegate:self];
    
    // You may use a Block, rather than a delegate.
    [alertView setOnButtonTouchUpInside:^(CustomIOS7AlertView *alertView, int buttonIndex) {
        NSLog(@"Block: Button at position %d is clicked on alertView %d.", buttonIndex, [alertView tag]);
        [alertView close];
    }];
    
    [alertView setUseMotionEffects:true];
    
    // And launch the dialog
    [alertView show];
    

    and inside the method of createDemoView,you have to implement your customised view.in my case it is like this

    UIView *demoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 290, 100)];
    
    //alertView.tag=2;
    
    UILabel *rateLbl=[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 290, 45)];
    rateLbl.backgroundColor=[UIColor clearColor];
    rateLbl.font=[UIFont boldSystemFontOfSize:15];
    rateLbl.text=@"Rate";
    
    UILabel *cmntLable=[[UILabel alloc]initWithFrame:CGRectMake(10, 45, 290, 45)];
    cmntLable.backgroundColor=[UIColor clearColor];
    cmntLable.font=[UIFont boldSystemFontOfSize:15];
    cmntLable.text=@"Add Comment";
    
    UIImage *dot, *star;
    dot = [UIImage imageNamed:@"dot.png"];
    star = [UIImage imageNamed:@"star.png"];
    JSFavStarControl *rating = [[JSFavStarControl alloc] initWithLocation:CGPointMake(150, 20) dotImage:dot starImage:star];
    [rating addTarget:self action:@selector(updateRating:) forControlEvents:UIControlEventValueChanged];
    
    
    UILabel *lblAlertTItle=[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 290, 45)];
    lblAlertTItle.backgroundColor=[UIColor clearColor];
    lblAlertTItle.textAlignment=UITextAlignmentCenter;
    lblAlertTItle.font=[UIFont boldSystemFontOfSize:18];
    lblAlertTItle.text=@"Choose your sharing option";
    
    
    UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(150, 57, 100, 25)];
    text.backgroundColor=[UIColor whiteColor];
    //[demoView addSubview:lblAlertTItle];
    [demoView addSubview:text];
    [demoView addSubview:rating];
    [demoView addSubview:rateLbl];
    [demoView addSubview:cmntLable];
    
    
    return demoView;
    

    so my output is like this. use it and have fun :)

    thank you for everyone who helped me.

    enter image description here

提交回复
热议问题