0

我想使用 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)) 需要一个参数/常量声明 & 它看起来不像我可以在这里做 - 我可以做类似的事情吗?

4

2 回答 2

1

您可以使用

if(UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]))

或通过更改视图控制器中的标志(例如BOOL shouldDrawPortrait) 。didRotateFromInterfaceOrientation:

于 2013-10-07T16:27:30.607 回答
0

设备何时改变方向,在 中didRotateFromInterfaceOrientation,您必须调用 at 的方法setNeedDisplayUIView

前任:[box1 setNeedDisplay];

于 2013-10-07T16:30:23.680 回答