0

我正在使用PKRevealController在我的应用程序中创建 SplitView。在PKRevealController.m文件中,我给出了使用此代码将显示多少屏幕的值

#define DEFAULT_LEFT_VIEW_WIDTH_RANGE NSMakeRange(273, 310)

这适用于 iPhone,但现在我想制作循环来选择尺寸。如果设备是 iPad 而不是大,那么我怎么能这样做,因为它在外面@interface PKRevealController

我在谷歌上检查了一些代码,我发现像这样

#if defined(__IPHONE_6_0) || defined(__MAC_10_8)
#define AF_CAST_TO_BLOCK id
#else
#define AF_CAST_TO_BLOCK __bridge void *

那么我可以创建这样的东西来选择设备吗?

4

2 回答 2

0

我真的不认为有办法做到这一点,通常这样的问题可以通过制作 2 个#define 语句来解决,如下所示:

#define DEFAULT_LEFT_VIEW_WIDTH_RANGE_IPHONE NSMakeRange(273, 310)
#define DEFAULT_LEFT_VIEW_WIDTH_RANGE_IPAD NSMakeRange(273, 310)

然后当你必须在代码中使用它时,只需检查设备类型,如下所示:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    /* code that uses DEFAULT_LEFT_VIEW_WIDTH_RANGE_IPAD */
}
else {
    /* code that uses DEFAULT_LEFT_VIEW_WIDTH_RANGE_IPHONE */
}
于 2013-07-25T14:33:16.893 回答
0

您可以根据需要使用此代码来实现此更改值

在您的 PKRevealController.m

#define DEFAULT_LEFT_VIEW_WIDTH_RANGE_iPad NSMakeRange(700, 700)

#define DEFAULT_LEFT_VIEW_WIDTH_RANGE_iPhone NSMakeRange(273, 310)

#define DEFAULT_RIGHT_VIEW_WIDTH_RANGE_iPad DEFAULT_LEFT_VIEW_WIDTH_RANGE_iPad
#define DEFAULT_RIGHT_VIEW_WIDTH_RANGE_iPhone DEFAULT_LEFT_VIEW_WIDTH_RANGE_iPhone

并在 iterface 中找出setup方法并用此方法替换它

杂注标记 - 设置

- (void)setup
{
    self.state = PKRevealControllerFocusesFrontViewController;
    if ([[UIDevice currentDevice] userInterfaceIdiom] ==UIUserInterfaceIdiomPhone)
    {
        //device is iPhone
        self.leftViewWidthRange = DEFAULT_LEFT_VIEW_WIDTH_RANGE_iPhone;
        self.rightViewWidthRange = DEFAULT_RIGHT_VIEW_WIDTH_RANGE_iPhone;
    }
    else
    {
        //device is iPad
        self.leftViewWidthRange = DEFAULT_LEFT_VIEW_WIDTH_RANGE_iPad;
        self.rightViewWidthRange = DEFAULT_RIGHT_VIEW_WIDTH_RANGE_iPad;
    }
   
    
    self.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
}

比它应该工作.. :)

于 2013-07-25T14:40:28.477 回答