使用多种颜色iOS填写UIView

Tyl*_*itt 3 uiview drawrect ios cgrect

我想用多种颜色填写UIView背景.我想将它用作各种状态栏,因此如果完成1/2必要步骤,则UIView背景将为1/2绿色和1/2红色.当用户完成更多步骤(比如2/3)时,更多的UIView背景变为绿色(在这种情况下为2/3).

我猜我需要覆盖

-(void) drawREct: (CGRect) rect
Run Code Online (Sandbox Code Playgroud)

我想我会得到UIView,弄清楚它有多大,然后把它分成2个矩形然后填充那些矩形.

另一种选择是以编程方式添加2个UIViews,但我是IB的粉丝.

有可能像我想要的那样划分UIView吗?

谢谢

Pen*_*One 9

这不是IB解决方案,但您可以继承UIView并覆盖该drawRect方法以添加自定义渐变.这将允许您放置任何数量的颜色,并让它们过硬或平滑过渡.网上有许多不错的教程应该采用不同的方法(更精细,更简单一些).

另一个相当简单的选择是覆盖drawRect,使背景变为红色,然后fill是占据视图下半部分的矩形.它不允许颜色之间的花哨或平滑过渡,但它很容易实现.例如,沿着这些方向的东西应该工作:

-(void)drawRect:(CGRect)rect {
    CGRect upperRect = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height * percentDone);
    CGRect lowerRect = CGRectMake(rect.origin.x, rect.origin.y + (rect.size.height * percentDone), rect.size.width, rect.size.height *(1-percentDone));

    [[UIColor redColor] set]; 
    UIRectFill(upperRect);
    [[UIColor greenColor] set]; 
    UIRectFill(lowerRect);
}
Run Code Online (Sandbox Code Playgroud)

这里percentDone是一个浮动(声明,property(nonatomic),synthesize),您可以绑定到用户的操作步骤.然后只需在用户执行操作时更新视图

splitView.percentDone = .5;
[splitView setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)

您也可以使用动画来平滑这一点.