Minha visualização de login possui uma subview que possui um UIActivityView
e um UILabel
ditado "Conectando ...". Essa subvisão possui cantos que não são arredondados. Como posso fazê-los circular?
Existe alguma maneira de fazer isso dentro do meu xib?
ios
cocoa-touch
uiview
itsaboutcode
fonte
fonte
cornerRadius
propriedade à tabela usando apenas o Interface Builder, sem precisar usar imagens pré-renderizadas ou defini-las no código.Respostas:
Tente isto
...
Nota: Se você estiver tentando aplicar cantos arredondados à
UIViewController
visualização de uma, ela não deve ser aplicada no construtor do controlador de visualização, mas sim-viewDidLoad
, após, naview
verdade , é instanciada.fonte
Você também pode usar o recurso Atributos de Tempo de Execução Definidos pelo Usuário do construtor de interface para definir o caminho da chave
layer.cornerRadius
para um valor. Certifique-se de incluir aQuartzCore
biblioteca.Esse truque também funciona para definir layer.borderWidth, no entanto, não funcionará,
layer.borderColor
pois espera-se queCGColor
não seja aUIColor
.Você não poderá ver os efeitos no storyboard porque esses parâmetros são avaliados em tempo de execução.
fonte
Clip Subviews
opção para a visualização IB também #Agora você pode usar uma categoria rápida no UIView (código abaixo da imagem) com @IBInspectable para mostrar o resultado no storyboard (se você estiver usando a categoria, use apenas cornerRadius e não layer.cornerRadius como caminho principal.
fonte
@IBDesignable
para obter uma visualização ao vivo no IB! (Mais em nshipster.com/ibinspectable-ibdesignable )Rápido
Resposta curta:
Resposta complementar
Se você chegou a esta resposta, provavelmente já viu o suficiente para resolver seu problema. Estou adicionando esta resposta para dar uma explicação visual mais detalhada de por que as coisas fazem o que fazem.
Se você começar com um regular,
UIView
ele tem cantos quadrados.Você pode arredondá-lo alterando a
cornerRadius
propriedade da exibiçãolayer
.Valores de raio maiores fornecem mais cantos arredondados
e valores menores fornecem menos cantos arredondados.
Isso pode ser suficiente para resolver seu problema ali mesmo. No entanto, às vezes uma exibição pode ter uma subvisão ou uma subcamada que fica fora dos limites da exibição. Por exemplo, se eu fosse para adicionar uma sub vista como esta
ou se eu adicionasse uma sub- camada como esta
Então eu terminaria com
Agora, se eu não quiser coisas penduradas fora dos limites, posso fazer isso
ou isto
o que dá esse resultado:
Ambos
clipsToBounds
emasksToBounds
são equivalentes . É apenas que o primeiro é usado comUIView
e o segundo é usado comCALayer
.Veja também
fonte
blueView.frame.size.height/2
) resulta em um canto perfeitamente arredondado.Uma abordagem diferente da que Ed Marty fez:
Você precisa do setMasksToBounds para carregar todos os objetos do IB ... eu tenho um problema em que minha visão foi arredondada, mas não tinha os objetos do IB: /
isso corrigiu = D espero que ajude!
fonte
Conforme descrito nesta postagem do blog , aqui está um método para arredondar os cantos de um UIView:
A parte interessante é que você pode selecionar os cantos que deseja arredondar.
fonte
Você precisa primeiro importar o arquivo de cabeçalho
<QuartzCore/QuartzCore.h>
Não deixe de usar -
setMasksToBounds
caso contrário, o efeito pode não ser mostrado.fonte
Você pode usar a seguinte
UIView
classe personalizada, que também pode alterar a cor e a largura da borda. Assim,IBDesignalbe
você também pode alterar os atributos no construtor de interfaces.fonte
fonte
Swift 4 - Usando o IBDesignable
fonte
layer.cornerRadius
que retorne ao estado original? (ei, como o storyboard do xcode sabe como definircornerRadius
somente depois que o originalUIView
é inicializado)?fonte
- SwiftUI
No SwiftUI, você pode usar o
cornerRadius
modificador diretamente em qualquer umView
que desejar. Por exemplo desta pergunta:Observe que não há mais diamante como raio; portanto, mesmo se você definir o cantoRádio mais da metade da altura , ele arredondará suavemente.
Faça o checkout desta resposta para ver como arredondar cantos específicos no SwiftUI
fonte
Por favor, importe,
Quartzcore framework
então você deve definirsetMaskToBounds
paraTRUE
isso a linha muito importante.Então:
[[yourView layer] setCornerRadius:5.0f];
fonte
fonte
Faça isso programaticamente em obj c
Também podemos fazer isso no stoaryboard.
fonte
se o canto redondo não funcionar em viewDidload () , é melhor escrever o código em viewDidLayoutSubview ()
Espero que isto ajude!
fonte
Você também pode usar uma imagem:
fonte
Propriedade CornerRadious para Round View
set masksToBounds O valor booleano da imagem ainda não será desenhado fora do limite do raio do canto
fonte
Usando a extensão UIView:
Uso:
fonte
No Swift 4.2 e no Xcode 10.1
fonte
ON Xcode 6 Sua tentativa
ou
fonte