1.我选择定制圆角的方法是,利用UIBezierPath对象拿到路径,然后赋值给CAShapeLayer对象,最后利用视图的图层mask属性进行圆角定制。
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:button.bounds
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii:CGSizeMake(12, 12)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = button.bounds;
maskLayer.path = maskPath.CGPath;
button.layer.mask = maskLayer;
2.使用Masnory进行布局,拿不到frame,所以上面的代码就因此无效。
3.我要定制的圆角是 UITableView 对象中的 heardView 和 cell,而且 两个视图的大小是自适应的,另外随着数据源的更新不同,这样的圆角的定制情况也会有所不同。那么这种情况下,使用 - setNeedsUpdateConstraints、- layoutIfNeeded 等方法拿到frame 再来进行圆角定制,也不现实。况且,性能上也不允许。
所以,我想问问,在这样的情况要求下,还可以使用什么方法来进行圆角定制。如果,你知晓的话,请在闲余之时回复一下,帮我解读解读。
谢谢啦、
Pour dessiner des coins arrondis, il faut préciser la taille, ou appeler la méthode maskToBounds, mais tout le monde sait que cette performance est la pire.
Je pense que nous devrions obtenir le cadre avant de dessiner et utiliser d'autres méthodes pour optimiser les problèmes de performances. (Semblable à la réécriture de drawRect pour réduire la hiérarchie des vues, etc., ou à l'utilisation d'instruments pour analyser où se trouve le goulot d'étranglement
Dans les cas extrêmes, utilisez directement le calcul dur du cadre et n'utilisez pas la mise en page automatique.
La méthode de traitement dans notre projet consiste à utiliser un UIView avec un calque de coins arrondis à l'intérieur. Cette vue établit des contraintes avec la vue qui nécessite des coins arrondis et dessine une courbe de Bézier dans la sous-vue de mise en page de cette vue aux coins arrondis
En fait, le meilleur moyen est de leur ajouter directement une image aux coins arrondis, qui a les meilleures performances