web-gelistirme-sc.com

UIButton Görüntüsü + Metin IOS

Bir UIButton ile görüntü ve metin seçeneğine ihtiyacım var. Resim üstte olmalı ve metin resmin altına girebiliyorsa her ikisi de tıklanabilir olmalıdır.

117
Codesen

Hepsi kod kullanan çok karmaşık cevaplar görüyorum. Bununla birlikte, Interface Builder kullanıyorsanız, bunu yapmanın çok kolay bir yolu var:

  1. Düğmesini seçin ve bir başlık ve bir resim belirleyin. Görüntü yerine arka planı ayarlarsanız, düğmeden küçükse görüntünün yeniden boyutlandırılacağını unutmayın.IB basic image and title
  2. Kenar ve iç kısımları değiştirerek her iki öğenin konumunu da ayarlayın. Kontrol bölümünde her ikisinin hizalamasını bile kontrol edebilirsiniz.

IB position setIB Control set

Önerilen aynı çözümde, içinde UILabels ve UIImages oluşturmadan da aynı yaklaşımı kod ile kullanabilirsiniz. Her zaman basit tutun!

DÜZENLEME: Doğru ekler ile 3 şey (başlık, resim ve arka plan) ayarlanmış küçük bir örnek Ekli Button preview

296
Angel G. Olloqui

Bence bu çözümü arıyorsanız probleminiz için:

UIButton *_button = [UIButton buttonWithType:UIButtonTypeCustom];
[_button setFrame:CGRectMake(0.f, 0.f, 128.f, 128.f)]; // SET the values for your wishes
[_button setCenter:CGPointMake(128.f, 128.f)]; // SET the values for your wishes
[_button setClipsToBounds:false];
[_button setBackgroundImage:[UIImage imageNamed:@"jquery-mobile-icon.png"] forState:UIControlStateNormal]; // SET the image name for your wishes
[_button setTitle:@"Button" forState:UIControlStateNormal];
[_button.titleLabel setFont:[UIFont systemFontOfSize:24.f]];
[_button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; // SET the colour for your wishes
[_button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // SET the colour for your wishes
[_button setTitleEdgeInsets:UIEdgeInsetsMake(0.f, 0.f, -110.f, 0.f)]; // SET the values for your wishes
[_button addTarget:self action:@selector(buttonTouchedUpInside:) forControlEvents:UIControlEventTouchUpInside]; // you can ADD the action to the button as well like

... düğmenin özelleştirilmesinin geri kalanı şu anda sizin görevinizdir ve düğmeyi görünümünüze eklemeyi unutmayın.

GÜNCELLEME # 1 ve GÜNCELLEME # 2

veya, dinamik bir düğmeye ihtiyacınız yoksa Arayüz Oluşturucu'da orada da aynı değerleri ayarlayabilirdi. bu oldukça aynı, ama işte bu versiyon basit bir resimde de var.

sen ayrıca son sonucu da görebilirsin Interface Builder ekran görüntüsünde olduğu gibi.

enter image description here

65
holex

Xcode-9 ve Xcode-10 Apple Edge Inset ile ilgili birkaç değişiklik yaptınız, onu boyut denetçisi altında değiştirebilirsiniz.

Lütfen aşağıdaki adımları izleyin:

Adım-1: Metnini girin ve göstermek istediğiniz resmi seçin:

enter image description here

Adım-2: Aşağıdaki resimde gösterildiği gibi, isteğinize göre düğme kontrolünü seçin:

enter image description here

Adım-3: Şimdi denetçi boyutuna gidin ve gereksiniminize göre değer ekleyin:

enter image description here

25
Alok
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.imageView.image = [UIImage imageNamed:@"your image name here"];
button.titleLabel.text = @"your text here";

ancak aşağıdaki kod yukarıdaki etiketi ve arka planda resmi gösterecektir.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.background.image = [UIImage imageNamed:@"your image name here"];
button.titleLabel.text = @"your text here";

UIButton, UILabel ve UIimageview özelliklerine sahip olduğundan, aynı kontrolde etiket ve düğmeyi kullanmaya gerek yoktur.

8
Vinodh

UIImageView ve UILabel yapın ve her ikisine de görüntü ve metni ayarlayın .... sonra imageView ve Label'ın üzerine özel bir düğme yerleştirin ...

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search.png"]];
    imageView.frame = CGRectMake(x, y, imageView.frame.size.width, imageView.frame.size.height);
    [self.view addSubview:imageView];

UILabel *yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y,a,b)];
yourLabel.text = @"raj";
[self.view addSubview:yourLabel];

UIButton * yourBtn=[UIButton buttonWithType:UIButtonTypeCustom];
[yourBtn setFrame:CGRectMake(x, y,c,d)];
[yourBtn addTarget:self action:@selector(@"Your Action") forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:yourBtn];  
3
Rajneesh071

Bu kodu kullan:

UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.imageView.frame=CGRectMake(0.0f, 0.0f, 50.0f, 44.0f);///You can replace it with your own dimensions.
    UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 35.0f, 50.0f, 44.0f)];///You can replace it with your own dimensions.
    [button addSubview:label];
3
iPhone Developer

Bu kodu kullan:

UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom];
[sampleButton setFrame:CGRectMake(0, 10, 200, 52)];
[sampleButton setTitle:@"Button Title" forState:UIControlStateNormal];
[sampleButton setFont:[UIFont boldSystemFontOfSize:20]];
[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]
3
Hemant Dixit

Aynı problemle karşılaştım ve yeni bir UIButton alt sınıfı oluşturarak ve layoutSubviews: metodunu aşağıdaki gibi geçersiz kılarak düzelttim:

-(void)layoutSubviews {
    [super layoutSubviews];

    // Center image
    CGPoint center = self.imageView.center;
    center.x = self.frame.size.width/2;
    center.y = self.imageView.frame.size.height/2;
    self.imageView.center = center;

    //Center text
    CGRect newFrame = [self titleLabel].frame;
    newFrame.Origin.x = 0;
    newFrame.Origin.y = self.imageView.frame.size.height + 5;
    newFrame.size.width = self.frame.size.width;

    self.titleLabel.frame = newFrame;
    self.titleLabel.textAlignment = UITextAlignmentCenter;

}

Sanırım Angel García Olloqui'nin cevabının başka bir iyi çözüm olduğunu düşünüyorum, hepsini el ile arayüz oluşturucuya yerleştirirseniz, ancak her düğm için içerik eklerini değiştirmek zorunda olmadığım için çözümümü tutacağım.

3
Oyashiro

Resim için özel görüntüleme ve metin için özel etiket oluşturmalı ve düğmesine alt görünümler olarak eklemelisiniz. Bu kadar.

UIButton *yourButton = [UIButton buttonWithType:UIButtonTypeCustom];
yourButton.backgroundColor = [UIColor greenColor];
yourButton.frame = CGRectMake(140, 40, 175, 30);     
[yourButton addTarget:self action:@selector(yourButtonSelected:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:yourButton];

UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, yourButton.frame.size.width, yourButton.frame.size.height/2)];
imageView1.image =[UIImage imageNamed:@"images.jpg"];
[yourButton addSubview:imageView1];

UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, yourButton.frame.size.height/2, yourButton.frame.size.width, yourButton.frame.size.height/2)];
label.backgroundColor = [UIColor greenColor];
label.textAlignment= UITextAlignmentCenter;
label.text = @"ButtonTitle";
[yourButton addSubview:label];

Test amacıyla, yourButtonSelected: yöntemini kullanın.

-(void)yourButtonSelected:(id)sender{
    NSLog(@"Your Button Selected");

}

Bence sana yardımcı olacak.

3
Prasad G

Gerçekten basit, düğmenizin arka planına görüntü ekleyin ve uicontrolstatenormal için düğmenin başlık etiketine metin verin. Bu kadar.

[btn setBackgroundImage:[UIImage imageNamed:@"img.png"] forState:UIControlStateNormal];
[btn setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];
[btn setTitle:@"Click Me" forState:UIControlStateNormal];
2
Dhruv

Bu müthiş lib'i kontrol et ImageCenterButton Diğer liblerin karşılaştığı tüm problemleri çözer ve iOS 9 ile çalıştığını onaylarım.

enter image description here

1
Mohamed Saleh