2 wssg253 wssg253 于 2016.03.19 10:59 提问

Kxmenu怎么修改背景色。iOS
ios

绘制代码如下

    CGFloat R0 = 0.267, G0 = 0.303, B0 = 0.335;
CGFloat R1 = 0.040, G1 = 0.040, B1 = 0.040;

UIColor *tintColor = [KxMenu tintColor];
if (tintColor) {

    CGFloat a;
    [tintColor getRed:&R0 green:&G0 blue:&B0 alpha:&a];
}

CGFloat X0 = frame.origin.x;
CGFloat X1 = frame.origin.x + frame.size.width;
CGFloat Y0 = frame.origin.y;
CGFloat Y1 = frame.origin.y + frame.size.height;

// render arrow

UIBezierPath *arrowPath = [UIBezierPath bezierPath];

// fix the issue with gap of arrow's base if on the edge
const CGFloat kEmbedFix = 3.f;

if (_arrowDirection == KxMenuViewArrowDirectionUp) {

    const CGFloat arrowXM = _arrowPosition;
    const CGFloat arrowX0 = arrowXM - kArrowSize;
    const CGFloat arrowX1 = arrowXM + kArrowSize;
    const CGFloat arrowY0 = Y0;
    const CGFloat arrowY1 = Y0 + kArrowSize + kEmbedFix;

    [arrowPath moveToPoint:    (CGPoint){arrowXM, arrowY0}];
    [arrowPath addLineToPoint: (CGPoint){arrowX1, arrowY1}];
    [arrowPath addLineToPoint: (CGPoint){arrowX0, arrowY1}];
    [arrowPath addLineToPoint: (CGPoint){arrowXM, arrowY0}];

    [[UIColor colorWithRed:R0 green:G0 blue:B0 alpha:1] set];
    Y0 += kArrowSize;

} else if (_arrowDirection == KxMenuViewArrowDirectionDown) {

    const CGFloat arrowXM = _arrowPosition;
    const CGFloat arrowX0 = arrowXM - kArrowSize;
    const CGFloat arrowX1 = arrowXM + kArrowSize;
    const CGFloat arrowY0 = Y1 - kArrowSize - kEmbedFix;
    const CGFloat arrowY1 = Y1;

    [arrowPath moveToPoint:    (CGPoint){arrowXM, arrowY1}];
    [arrowPath addLineToPoint: (CGPoint){arrowX1, arrowY0}];
    [arrowPath addLineToPoint: (CGPoint){arrowX0, arrowY0}];
    [arrowPath addLineToPoint: (CGPoint){arrowXM, arrowY1}];

    [[UIColor colorWithRed:R1 green:G1 blue:B1 alpha:1] set];

    Y1 -= kArrowSize;

} else if (_arrowDirection == KxMenuViewArrowDirectionLeft) {

    const CGFloat arrowYM = _arrowPosition;        
    const CGFloat arrowX0 = X0;
    const CGFloat arrowX1 = X0 + kArrowSize + kEmbedFix;
    const CGFloat arrowY0 = arrowYM - kArrowSize;;
    const CGFloat arrowY1 = arrowYM + kArrowSize;

    [arrowPath moveToPoint:    (CGPoint){arrowX0, arrowYM}];
    [arrowPath addLineToPoint: (CGPoint){arrowX1, arrowY0}];
    [arrowPath addLineToPoint: (CGPoint){arrowX1, arrowY1}];
    [arrowPath addLineToPoint: (CGPoint){arrowX0, arrowYM}];

    [[UIColor colorWithRed:R0 green:G0 blue:B0 alpha:1] set];

    X0 += kArrowSize;

} else if (_arrowDirection == KxMenuViewArrowDirectionRight) {

    const CGFloat arrowYM = _arrowPosition;        
    const CGFloat arrowX0 = X1;
    const CGFloat arrowX1 = X1 - kArrowSize - kEmbedFix;
    const CGFloat arrowY0 = arrowYM - kArrowSize;;
    const CGFloat arrowY1 = arrowYM + kArrowSize;

    [arrowPath moveToPoint:    (CGPoint){arrowX0, arrowYM}];
    [arrowPath addLineToPoint: (CGPoint){arrowX1, arrowY0}];
    [arrowPath addLineToPoint: (CGPoint){arrowX1, arrowY1}];
    [arrowPath addLineToPoint: (CGPoint){arrowX0, arrowYM}];

    [[UIColor colorWithRed:R1 green:G1 blue:B1 alpha:1] set];

    X1 -= kArrowSize;
}

[arrowPath fill];

// render body

const CGRect bodyFrame = {X0, Y0, X1 - X0, Y1 - Y0};

UIBezierPath *borderPath = [UIBezierPath bezierPathWithRoundedRect:bodyFrame
                                                      cornerRadius:8];

const CGFloat locations[] = {0, 1};
const CGFloat components[] = {
    R0, G0, B0, 1,
    R1, G1, B1, 1,
};

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,
                                                             components,
                                                             locations,
                                                             sizeof(locations)/sizeof(locations[0]));
CGColorSpaceRelease(colorSpace);


[borderPath addClip];

CGPoint start, end;

if (_arrowDirection == KxMenuViewArrowDirectionLeft ||
    _arrowDirection == KxMenuViewArrowDirectionRight) {

    start = (CGPoint){X0, Y0};
    end = (CGPoint){X1, Y0};

} else {

    start = (CGPoint){X0, Y0};
    end = (CGPoint){X0, Y1};
}

CGContextDrawLinearGradient(context, gradient, start, end, 0);

CGGradientRelease(gradient);    

2个回答

redhjb
redhjb   2016.03.19 15:09

[tintColor getRed:&R0 green:&G0 blue:&B0 alpha:&a];

r 后面的数字改一下g 也是b 也是。不知道数值,装个photoshop看一下

u014116643
u014116643   2016.03.22 14:36

CGFloat R0 = 0.267, G0 = 0.303, B0 = 0.335;
CGFloat R1 = 0.040, G1 = 0.040, B1 = 0.040;

这是颜色的RGB值,都是0~1。改变他们值就是了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
iOS之KxMenu第三方的使用
1、网上下载KxMenu的源码,两个文件,一个.h一个.m文件 @implementation ViewController { UIButton* _btn1; } -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNi
IOS第二十八天——借助开源力量,试用下别人写的一个KxMenu
今天在看开源中国时看到别人写的一个demo很帅啊,是一个垂直方向展示的弹出菜单,链接地址为:IOS弹出式菜单KxMenu 同时文中也附上了github的地址,在此热泪感谢原作者,我们来试用一下。 因为学习了也有一段日子了,所以我们不能只做一个拖控件的,所以今天的这个demo,我们用纯代码方式来实现一下。 首先,创建一个空的项目。 然后我们添加一个Object-C类,不添加xib文件。 之后
ios修改NavigationController的背景颜色
在ios开发的过程中,我们经常需要修改NavigationController的背景颜色,当使用方法[self.navigationController.navigationBar setBackgroundColor:[UIColor redColor]]时,运行的结果并不能修改北京颜色: 现在提供一种新方法来解决这个问题: 写一个NavigationBar写一个类别: @in
修改UISearchBar的TextField的背景颜色
UIView *searchTextField = nil; // 经测试, 需要设置barTintColor后, 才能拿到UISearchBarTextField对象 _searchBar.barTintColor = [UIColor clearColor]; searchTextField = [[[_searchBar.subviews firstObject] su
iOS 更改导航栏背景颜色
ios7以下的版本设置导航栏背景颜色可以使用 [[UINavigationBar appearance] setTintColor:[UIColor orangeColor]]; ios7以后: [[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]]; 默认带有一定透明效果,可以使用以下方法去
ios改变tablecell背景色
最有效的解决方式是: 使用  - (void) tableView: (UITableView *) tableView  willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 托管函数中定义Cell的背景颜色值。(注意:cell.textLabel的背景颜色默认为white, 如
iOS暴力更改状态栏背景颜色
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; statusBar.backgroundColor = [UIColor whiteColor];
ios给view设置背景颜色的正确方式
UIView *back=[[UIView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];     UIImage *image=[UIImage imageNamed:@"background.jpg"];     back.layer.contents=(__bridge id _Nullable)(image.CGIm
iphone自定义弹出式菜单(popoverView)
在调用的地方如下代码调用:     NSArray *menuList, *imgList;     NSMutableArray *menuItems = [[NSMutableArray alloc] init];     menuList = @[@"扫一扫",@"设置",@"分享",@"退出"];     imgList = @[@"扫一扫.
iOS 自定义Tabbar 改变点击背景颜色
快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q 插入链接 Ctrl + L 插入代码 Ctrl + K 插入图片 Ctrl + G 提升标题 Ctrl + H 有序列表 Ctrl + O 无序列表 Ctrl + U 横线 Ctrl + R 撤销 Ctrl + Z 重做 Ctrl + Y Mar