Custom UIButton for Iphone

前端 未结 4 738
梦毁少年i
梦毁少年i 2020-12-23 12:49

I have an view in my App which has a number of buttons based on the number of items returned by the server. So if the server returns say 10 items, there should be 10 buttons

相关标签:
4条回答
  • 2020-12-23 13:12

    you can use individual class for custom Roundrect button which can be useful in whole project with your specific frame style as below

    #import <UIKit/UIKit.h>
    #import <QuartzCore/QuartzCore.h>
    @interface CustomRoundRectButton : UIButton
    @end
    
    
    #import "CustomRoundRectButton.h"
    @implementation CustomRoundRectButton
    - (void)drawRect:(CGRect)rect
    {
    [[self layer] setMasksToBounds:YES];
    [self.layer setCornerRadius:10.0f]; 
    [self.layer setBorderColor:[UIColor grayColor].CGColor]; 
    [self.layer setBorderWidth:1.0];
    }
    @end
    

    In this you have to select button type custom and select its class as CustomRoundRectButton.

    For Simple custom button we can use as below
    
    -(UIBarButtonItem*)BackButton
    {
    UIButton*btn =  [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
    [btn setFrame:CGRectMake(0, 0, 30, 30)];
    [btn addTarget:self action:@selector(actionBack) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem*barBtn = [[[UIBarButtonItem alloc] initWithCustomView:btn] autorelease];
    return barBtn;
    }
    
    0 讨论(0)
  • 2020-12-23 13:14
    [sampleButton setFont:[UIFont boldSystemFontOfSize:20]]; 
    

    setFont is now deprecated, use titleLabel.font property instead

    sampleButton.titleLabel.font = [UIFont boldSystemFontOfSize:20];
    
    0 讨论(0)
  • 2020-12-23 13:15

    Shouldn't you be calling initWithFrame: rect instead of:

        HopitalButton* hb = [[HopitalButton alloc] init];
    
    0 讨论(0)
  • 2020-12-23 13:23

    You first start with a stretchable image with a border:

    alt text http://grab.by/4lP

    Then you make a button with the stretched image as the background and apply text.

    INDEX_OFFSET = 82753; // random
    
    UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [sampleButton setFrame:CGRectMake(kLeftMargin, 10, self.view.bounds.size.width - kLeftMargin - kRightMargin, 52)];
    [sampleButton setTitle:@"Button Title" forState:UIControlStateNormal];
    [sampleButton setFont:[UIFont boldSystemFontOfSize:20]];
    [sampleButton setTag:<INDEX>+INDEX_OFFSET];
    [sampleButton setBackgroundImage:[[UIImage imageNamed:@"redButton.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
    [sampleButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:sampleButton];
    

    Obviously, you will need to adjust the frame origin and size to match your app, as well as the target, selector, and title. And

    0 讨论(0)
提交回复
热议问题