我想使用drawRect绘制6个框,这些框将用作我设置的6个标签输出的背景 - 当设备的方向改变时我需要改变框的绘制位置...我在想做一个if-else语句,如下所示:
- (void)drawRect:(CGRect)rect
{
// Drawing code
if (UIInterfaceOrientationIsPortrait(orientation)) {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 0.611, 0.505, 0.321, 1.0); // Goldie brown colour
CGContextFillRect(context, CGRectMake(70, 277, 35, 50)); // Years
CGContextFillRect(context, CGRectMake(145, 277, 35, 50)); // Months
CGContextFillRect(context, CGRectMake(220, 277, 35, 50)); // Days
CGContextFillRect(context, CGRectMake(70, 393, 35, 50)); // Hours
CGContextFillRect(context, CGRectMake(145, 393, 35, 50)); // Minutes
CGContextFillRect(context, CGRectMake(220, 393, 35, 50)); // Seconds
} else {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 0.611, 0.505, 0.321, 1.0); // Goldie brown colour
CGContextFillRect(context, CGRectMake(87, 221, 35, 50)); // Years
CGContextFillRect(context, CGRectMake(162, 221, 35, 50)); // Months
CGContextFillRect(context, CGRectMake(234, 221, 35, 50)); // Days
CGContextFillRect(context, CGRectMake(308, 221, 35, 50)); // Hours
CGContextFillRect(context, CGRectMake(385, 221, 35, 50)); // Minutes
CGContextFillRect(context, CGRectMake(466, 221, 35, 50)); // Seconds
}
但这不起作用,因为(UIInterfaceOrientationIsPortrait(orientation))需要参数/常量声明&它看起来不像我在这里可以做到的 - 有什么类似我可以做的吗?
答案 0 :(得分:1)
您可以使用
执行此操作if(UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]))
或更改视图控制器的BOOL shouldDrawPortrait
中的标记(例如didRotateFromInterfaceOrientation:
)。
答案 1 :(得分:0)
设备何时更改方向,在didRotateFromInterfaceOrientation
,您必须拨打setNeedDisplay
的方法UIView
。
ex:[box1 setNeedDisplay];