YCXMenu是類似微信右上角彈出式菜單三方庫。
github地址:https://github.com/Aster0id/YCXMenuDemo_ObjC
因項目需求芯义,要設(shè)置YCXMenu背景透明,網(wǎng)上說的辦法是在YCXMenu.m文件中的第301行修改alpha的值撒强,但更改過后發(fā)現(xiàn)連菜單上的文字也跟著透明了默蚌。這樣的效果不理想测砂,然后就花了一點時間研究了一下,幾經(jīng)波折形导,最后終于達(dá)到了自己的目的环疼。
現(xiàn)把自己的研究成果分享給大家:
第一步:解鎖該文件
-
點擊右上角解鎖按鈕
解鎖.png -
選擇Unlock解鎖
解鎖.png
第二步:設(shè)置背景透明度
- 在第647行和664行、681行朵耕、698行設(shè)置三角形箭頭的alpha值
[[UIColor colorWithRed:R0 green:G0 blue:B0 alpha:0.9] set];
- 在713炫隶、714行設(shè)置菜單背景的alpha值
const CGFloat components[] = {
R0, G0, B0, 0.9,
R1, G1, B1, 0.9,
};
第三步:設(shè)置三角形箭頭的大小
修改菜單為透明后,發(fā)現(xiàn)三角形箭頭和菜單區(qū)域有重疊阎曹,然后就修改三角形的繪制區(qū)域伪阶。
因為我的菜單是導(dǎo)航欄右側(cè)按鈕點擊彈出,所以我是在YCXMenuViewArrowDirectionUp中修改处嫌。
在第636到640行栅贴,修改如下:
const CGFloat arrowXM = _arrowPosition;
const CGFloat arrowX0 = arrowXM - [YCXMenu arrowSize] + 1;
const CGFloat arrowX1 = arrowXM + [YCXMenu arrowSize] - 1;
const CGFloat arrowY0 = Y0;
const CGFloat arrowY1 = Y0 + [YCXMenu arrowSize] + kEmbedFix - 2.75;