Existe uma maneira integrada de criar UILabels com cantos arredondados? Se a resposta for não, como alguém criaria esse objeto?
fonte
Existe uma maneira integrada de criar UILabels com cantos arredondados? Se a resposta for não, como alguém criaria esse objeto?
O iPhone OS 3.0 e versões posteriores suportam a cornerRadius
propriedade na CALayer
classe. Toda visualização possui uma CALayer
instância que você pode manipular. Isso significa que você pode obter cantos arredondados em uma linha:
view.layer.cornerRadius = 8;
Você precisará #import <QuartzCore/QuartzCore.h>
e vincular a estrutura do QuartzCore para obter acesso aos cabeçalhos e propriedades do CALayer.
Uma maneira de fazer isso, que usei recentemente, é criar uma subclasse UIView que simplesmente desenha um retângulo arredondado e, em seguida, crie o UILabel ou, no meu caso, UITextView, uma sub-visualização dentro dele. Especificamente:
UIView
subclasse e nomeie-a como algo RoundRectView
.RoundRectView
's drawRect:
método, desenhar um caminho em torno dos limites da vista usando chamadas de núcleo de gráficos, como CGContextAddLineToPoint () para as bordas e e CGContextAddArcToPoint () para os cantos arredondados.UILabel
instância e torne-a uma sub-visualização do RoundRectView.label.frame = CGRectInset(roundRectView.bounds, 8, 8);
)Você pode colocar o RoundRectView em uma exibição usando o Interface Builder se criar um UIView genérico e depois alterar sua classe usando o inspetor. Você não verá o retângulo até compilar e executar seu aplicativo, mas pelo menos poderá colocar a subvisão e conectá-la a tomadas ou ações, se necessário.
Para dispositivos com iOS 7.1 ou posterior, é necessário adicionar:
fonte
Para o Swift IOS8 em diante, com base na resposta do OScarsWyck:
fonte
YES
paratrue
.UILabel
chamado:myLabel
.#import <QuartzCore/QuartzCore.h>
em seu
viewDidLoad
escrever esta linha:self.myLabel.layer.cornerRadius = 8;
Boa sorte
fonte
Você pode fazer borda arredondada com largura da borda de qualquer controle da seguinte maneira: -
Basta substituir
lblName
com o seuUILabel
.Nota: - Não se esqueça de importar
<QuartzCore/QuartzCore.h>
fonte
Eu fiz uma
UILabel
subclasse rápida para alcançar esse efeito. Além disso, defino automaticamente a cor do texto para preto ou branco para obter o máximo contraste.Resultado
Posts SO usados:
Parque infantil
Basta colar isso no iOS Playground:
fonte
Outro método é colocar um png atrás do UILabel. Tenho exibições com vários rótulos que sobrepõem um único plano de fundo png que possui todo o trabalho artístico dos rótulos individuais.
fonte
xCode 7.3.1 iOS 9.3.2
fonte
Se você quiser canto arredondado da UI objetos como (
UILabel
,UIView
,UIButton
,UIImageView
) por storyboard em seguida, definirclip to bounds
verdade e definirUser Defined Runtime Attributes
caminho chave comolayer.cornerRadius
, type = Número e valor = 9 (como sua exigência)fonte
fonte
Swift 3
Se você quiser etiqueta arredondada com cor de fundo, além da maioria das outras respostas, também precisará definir
layer
a cor de fundo. Não funciona ao definir aview
cor de fundo.Se você estiver usando o layout automático, desejar algum preenchimento ao redor do rótulo e não desejar definir o tamanho do rótulo manualmente, poderá criar a subclasse UILabel e substituir a
intrinsincContentSize
propriedade:Para combinar os dois, você também precisará definir
label.textAlignment = center
, caso contrário, o texto ficará alinhado.fonte
No Monotouch / Xamarin.iOS, resolvi o mesmo problema assim:
fonte
Funciona perfeitamente no Swift 2.0
fonte
Você tentou usar o
UIButton
do construtor Interface (que possui cantos arredondados) e experimentar as configurações para fazer com que parecesse um rótulo. se tudo o que você deseja é exibir texto estático.fonte
"cornerRadius" é a propriedade key para definir as arestas arredondadas, onde se você estiver usando o mesmo estilo para todos os rótulos em seu aplicativo, eu recomendaria um método de extensão.
Código:
Resultado:
Por que método de extensão?
Crie um arquivo Swift e adicione o código a seguir, que possui o método Extention à classe "UILabel", onde esse método é definido pelo usuário, mas funcionará para todo o rótulo do seu aplicativo e ajudará a manter a consistência e o código limpo, se você alterar qualquer estilo no futuro requer apenas no método de extensão.
fonte
Dependendo do que exatamente você está fazendo, você pode criar uma imagem e defini-la como plano de fundo programaticamente.
fonte