cari

Rumah  >  Soal Jawab  >  teks badan

iOS:请问如何在使用Masnory进行自动布局的情况下进行视图的圆角定制、

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 再来进行圆角定制,也不现实。况且,性能上也不允许。

所以,我想问问,在这样的情况要求下,还可以使用什么方法来进行圆角定制。如果,你知晓的话,请在闲余之时回复一下,帮我解读解读。
谢谢啦、
迷茫迷茫2771 hari yang lalu647

membalas semua(3)saya akan balas

  • 高洛峰

    高洛峰2017-04-18 09:41:58

    Untuk melukis sudut bulat, anda mesti menentukan saiz, atau memanggil kaedah maskToBounds, tetapi semua orang tahu bahawa prestasi ini adalah yang paling teruk.

    Saya fikir kita harus mendapatkan bingkai sebelum melukis dan menggunakan kaedah lain untuk mengoptimumkan isu prestasi. (Serupa dengan menulis semula drawRect untuk mengurangkan hierarki paparan, dsb., atau menggunakan instrumen untuk menganalisis di mana kesesakan itu

    Dalam kes yang melampau, gunakan pengiraan keras bingkai secara langsung dan jangan gunakan reka letak automatik.

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:41:58

    Kaedah pemprosesan dalam projek kami ialah menggunakan UIView dengan lapisan sudut bulat di dalamnya. Pandangan ini menetapkan kekangan dengan pandangan yang memerlukan sudut bulat dan melukis lengkung Bezier dalam reka letaksubview pandangan sudut bulat ini

    balas
    0
  • 阿神

    阿神2017-04-18 09:41:58

    Malah, cara terbaik ialah dengan terus menambah gambar dengan bucu bulat padanya, yang mempunyai prestasi terbaik

    balas
    0
  • Batalbalas