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吗?
谢谢
这不是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)
您也可以使用动画来平滑这一点.
| 归档时间: |
|
| 查看次数: |
7101 次 |
| 最近记录: |