Eu quero adicionar uma imagem a um UIButton, e também quero escalar minha imagem para caber com o UIButton (tornar a imagem menor). Por favor, me mostre como fazer.
Tentei fazer isso, mas não deu certo:
- Adicionando imagem ao botão e usando
setContentMode
:
[self.itemImageButton setImage:stretchImage forState:UIControlStateNormal];
[self.itemImageButton setContentMode:UIViewContentModeScaleAspectFit];
- Fazendo uma "imagem esticada":
UIImage *stretchImage = [updatedItem.thumbnail stretchableImageWithLeftCapWidth:0 topCapHeight:0];
Respostas:
Se você realmente deseja dimensionar uma imagem, faça-o, mas deve redimensioná-la antes de usá-la. Redimensionar em tempo de execução apenas perderá ciclos de CPU.
Esta é a categoria que estou usando para dimensionar uma imagem:
UIImage + Extra.h
UIImage + Extra.m
Você pode usá-lo no tamanho que desejar. Gostar :
fonte
UIGraphicsBeginImageContext
vez deUIGraphicsBeginImageContextWithOptions
. Apenas consertei.Eu tive o mesmo problema. Basta definir o ContentMode do ImageView que está dentro do UIButton.
Espero que isto ajude.
fonte
imageView.contentMode
, tipoNumber
e valor da chave1
Nenhuma das respostas aqui realmente funcionou para mim. Resolvi o problema com o seguinte código:
Você também pode fazer isso no Interface Builder.
fonte
Aspect fit
vez descale to fill
.A maneira mais fácil de definir programaticamente um UIButton imageView no modo de ajuste de aspecto :
Rápido
Objective-C
Nota: Você pode alterar .scaleAspectFit (UIViewContentModeScaleAspectFit) para .scaleAspectFill (UIViewContentModeScaleAspectFill) para definir um preenchimento de aspecto modo de
fonte
Tive problemas com a imagem não redimensionada proporcionalmente, então a maneira que eu consertei foi usando inserções de borda.
fonte
Isso agora pode ser feito por meio das propriedades UIButton do IB. A chave é definir sua imagem como plano de fundo, caso contrário, não funcionará.
fonte
Expandindo a resposta de Dave, você pode definir o
contentMode
dos botõesimageView
todos em IB, sem nenhum código, usando os atributos de tempo de execução:1
significaUIViewContentModeScaleAspectFit
,2
significariaUIViewContentModeScaleAspectFill
.fonte
Se você simplesmente deseja reduzir a imagem do botão:
fonte
1 - limpar o texto padrão do botão (importante)
2 - definir alinhamento como imagem
3 - definir modo de conteúdo como imagem
fonte
Eu tenho um método que faz isso por mim. O método pega
UIButton
e ajusta o aspecto da imagem.fonte
A solução mais limpa é usar o Auto Layout . Baixei conteúdo Prioridade resistência à compressão do meu
UIButton
e definir a imagem (não Imagem de fundo ) via Interface Builder . Depois disso, adicionei algumas restrições que definem o tamanho do meu botão (bastante complexo no meu caso) e funcionou perfeitamente.fonte
Background Image
certifique-se de ter definido a imagem para a propriedade Image, mas não para a propriedade Background
fonte
A imagem de fundo pode ser configurada para dimensionar o preenchimento do aspecto com bastante facilidade. Só precisa fazer algo assim em uma subclasse de UIButton:
fonte
Swift 5.0
fonte
Para Xamarin.iOS (C #):
fonte
Você só precisa definir o modo de conteúdo do UIButton imageview para três eventos. -
Temos código para três eventos bcoz enquanto destacamos ou selecionamos se o tamanho do botão é QUADRADO e o tamanho da imagem é retângulo, então ele mostrará a imagem quadrada no momento do destaque ou seleção.
Tenho certeza de que funcionará para você.
fonte