⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fiveicon.mm

📁 iPhone 5 icon dock - customization
💻 MM
字号:
#include <substrate.h>

#import <Foundation/NSArray.h>
#import <Foundation/NSNull.h>
#import <CoreGraphics/CGGeometry.h>
#import <SpringBoard/SBButtonBar.h>
#import <SpringBoard/SBIcon.h>

@protocol Tweak
- (float) fid_leftMarginForIconRowArray:(NSArray *)row;
- (void) fid_setOrigin:(CGPoint)origin;
- (float) fid_topIconPadding;
@end

static bool $SBButtonBar$$isCrowded(SBButtonBar<Tweak> *self) {
    NSArray *matrix;
    object_getInstanceVariable(self, "_iconMatrix", reinterpret_cast<void **>(&matrix));
    NSArray *row([matrix objectAtIndex:0]);
    return row != nil && [row indexOfObject:[NSNull null]] == NSNotFound;
}

static float $SBButtonBar$leftMarginForIconRowArray$(SBButtonBar<Tweak> *self, SEL sel, NSArray *row) {
    return [row indexOfObject:[NSNull null]] == NSNotFound ? 4 : [self fid_leftMarginForIconRowArray:row];
}

static int $SBButtonBar$maxIconColumns(SBButtonBar<Tweak> *self, SEL sel) {
    return 5;
}

static float $SBButtonBar$topIconPadding(SBButtonBar<Tweak> *self, SEL sel) {
    float padding([self fid_topIconPadding]);
    if ($SBButtonBar$$isCrowded(self))
        --padding;
    return padding;
}

static float $SBButtonBar$verticalIconPadding(SBButtonBar<Tweak> *self, SEL sel) {
    return 0;
}

static void $SBIcon$setOrigin$(SBIcon<Tweak> *self, SEL sel, CGPoint origin) {
    if (origin.y == 10)
        origin.x = (origin.x - 4) / 76 * 63 + 4;
    else if (origin.y == 84) {
        origin.y -= 74;
        origin.x = 256;
    } else goto set;
    ++origin.y;
  set:
    [self fid_setOrigin:origin];
}

extern "C" void TweakInitialize() {
    if (objc_getClass("SpringBoard") == nil)
        return;

    Class $SBButtonBar(objc_getClass("SBButtonBar"));
    MSHookMessage($SBButtonBar, @selector(leftMarginForIconRowArray:), (IMP) &$SBButtonBar$leftMarginForIconRowArray$, "fid_");
    MSHookMessage($SBButtonBar, @selector(maxIconColumns), (IMP) &$SBButtonBar$maxIconColumns, "fid_");
    MSHookMessage($SBButtonBar, @selector(topIconPadding), (IMP) &$SBButtonBar$topIconPadding, "fid_");
    MSHookMessage($SBButtonBar, @selector(verticalIconPadding), (IMP) &$SBButtonBar$verticalIconPadding, "fid_");

    Class $SBIcon(objc_getClass("SBIcon"));
    MSHookMessage($SBIcon, @selector(setOrigin:), (IMP) $SBIcon$setOrigin$, "fid_");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -