3

次のコードを使用して画像をロードします。画像は上にあり、下半分はボタンのタイトルですが、画像のみです。これはなぜですか?良い提案があれば教えてください、ありがとう

UIButton *myButton = [[UIButton alloc]initWithFrame:CGRectMake(160, 400, 73, 44)];

    [myButton setImage:[UIImage imageNamed:@"icon.png"] forState:UIControlStateNormal];
    [myButton setImageEdgeInsets: UIEdgeInsetsMake(0,0,22,0)];

    [myButton setTitle:@"test" forState:UIControlStateNormal];
    [myButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [myButton setTitleEdgeInsets: UIEdgeInsetsMake(22,10,0,10)];

    [self.view addSubview:myButton];
4

1 に答える 1

4

この方法でもこの効果を達成できます。これを試してください::

UIButton *myButton = [[UIButton alloc]initWithFrame:CGRectMake(160, 400, 73, 55)];
UIImage *img = [UIImage imageNamed:@"icon.png"];
UIImageView *imgVw = [[UIImageView alloc ] init];
imgVw.image  = img;
imgVw.frame = CGRectMake(myButton.frame.origin.x, myButton.frame.origin.y, myButton.frame.size.width, (myButton.frame.size.height-18));
[myButton setTitle:@"test" forState:UIControlStateNormal];
[myButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[myButton setTitleEdgeInsets: UIEdgeInsetsMake(34,10,0,10)];
[myButton addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:imgVw];    
[self.view addSubview:myButton];

ボタン方式

-(void) btnClick:(id)sender
{
    NSLog(@"working");
}

あなたはあなたのロジックからも達成することができます::ここで私はあなたのロジックのいくつかのコードを編集しました

UIButton *myButton = [[UIButton alloc]initWithFrame:CGRectMake(160, 400, 40, 35)];
[myButton setImage:[UIImage imageNamed:@"icon.png"] forState:UIControlStateNormal];
[myButton setImageEdgeInsets:UIEdgeInsetsMake(0,(myButton.frame.size.width-52),17,0)];
[myButton setTitle:@"test" forState:UIControlStateNormal];
[myButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[myButton setTitleEdgeInsets: UIEdgeInsetsMake(22,(myButton.frame.size.width-78),0,22)];
[self.view addSubview:myButton];

ただし、このロジックでは、画像のサイズを23*23ピクセルに変更する必要があります。画像サイズに応じて、UIEdgeInsetsMakeのパラメータが変更されます。

お役に立てれば。ハッピーコーディング。

于 2013-03-18T06:33:51.003 に答える