CALayer: ajouter une bordure à un seul côté
Je peux ajouter une bordure à une CALayer de cette façon:
[webView.layer setBorderColor: [[UIColor colorWithRed:0.6 green:0.7 blue:0.2 alpha:1] CGColor]];
[webView.layer setBorderWidth: 2.75];
Mais est-il possible d'ajouter une bordure à un seul côté? J'ai seulement besoin d'une bordure en bas. Ou puis-je atteindre avec d'autres propriétés, par exemple, de cadre, de limites, masque, ...?
Merci pour votre aide!
@Control-V
UIWebView *webView = [[UIWebView alloc] init];
CALayer *webViewLayer = webView.layer;
//now you can do a lot of stuff like borders:
[webViewLayer setBorderColor: [[UIColor greenColor] CGColor]];
[webViewLayer setBorderWidth: 2.75];
Ont un look à la CALayer de la documentation:
https://developer.apple.com/documentation/quartzcore/calayer
Et jetez un oeil ici:
http://iosdevelopertips.com/cocoa/add-rounded-corners-and-border-to-uiwebview.html
- Je me demande encore comment avez-vous trouvé les propriétés de la couche pour UIWebView. je recherche difficile à trouver dans apple officiel docs.
- - Je modifier ma question pour vous
- Vous êtes le détournement de la webview de couche?? C'EST UNE IDÉE TERRIBLE. MERCI de NE PAS le FAIRE. Sauf dans de très rares circonstances, vous devez toujours tenir compte de
UIWebView
d'être un non-introspectable et complètement opaque objet. N'essayez même pas d'aller coucher autour avec des choses comme sa couche (depuis sa couche n'est PAS unCALayer
, mais plutôt unCATiledLayer
, par exemple), carUIWebView
peut être TRÈS particulier au sujet de la façon dont les choses sont censées être configuré.
Vous devez vous connecter pour publier un commentaire.
J'ai fait une bordure de droite à l'aide de ceci:
view.clipsToBounds = YES;
.leftBorder.frame = CGRectMake(0, 0, 1, leftScrollView.frame.size.height);
La façon la plus simple est d'ajouter une sous-couche qui va attirer l'sélective des frontières, mais il ya quelques choses à considérer lors du choix de cette solution, la plus grande assurer que les frontières de la sous-couche est toujours sur le dessus, et que les changements dans les frontières lorsque vous modifiez l'image de votre calque.
J'ai mis en place une goutte de solution open source qui prend soin de ces questions, et vous permettent de déclarer sélective des frontières comme ceci:
Vous pouvez obtenir le code, et lire un peu plus ici
La propriété border toujours ajouter un cadre à 4 côtés de votre point de vue.
Vous pouvez faire votre propre méthode de dessin pour dessiner la bordure au bas de votre point de vue.
Mais, pourquoi ne pas simplement ajouter une vue au-dessus de votre UIWebView à faire, il ressemble à une frontière?
Ma Solution Swift. Il comporte quatre fonctions différentes, toutes les extensions de UIView. Chaque fonction ajoute un autre de la frontière.
Voici la swift équivalent
Il y a une autre manière de faire. Le
CAShapeLayer
a des propriétés appelé "strokeStart
" et "strokeEnd
". Compte tenu de la caresser commence à partir de 0 et se termine à 1 quand il atteint le dos d'origine, complétant ainsi le chemin d'accès, vous pouvez définir les valeurs de début et de fin pour dessiner la bordure sur le côté.Exemple:
Les ouvrages suivants, avec Swift 4.2 pour appliquer une bordure le long d'un existant UIView.
Et vous pouvez l'appeler avec ceci:
Ce qui se passe:
Side
tel que défini dans l'enum, avec uncolor
etborderWidth
borderColor
etborderWidth