Является ли кнопка удаления "X" на главном экране частью SDK? - PullRequest
3 голосов
/ 06 октября 2010

Поэтому, когда вы хотите удалить приложение с главного экрана или удалить книгу из iBooks, когда вы попадаете в «Режим редактирования», в верхнем левом углу значка / книги приложения появляется небольшая крошечная буква X /без разницы.

Является ли эта кнопка частью SDK?

И ... если нет (я уверен, что это не так), кто-нибудь знает пример проекта Apple, который может содержать изображение X?

Ответы [ 3 ]

5 голосов
/ 06 октября 2010

Вы можете попробовать поискать в Springboard.app.(Springboard - это домашний экран в iOS.) Он должен находиться где-то вроде:

/ Разработчик / Платформы / iPhoneSimulator.platform / Разработчик / SDKs / iPhoneSimulator * XYZ * .sdk / Система / Библиотека / CoreServices / SpringBoard.app /

РЕДАКТИРОВАТЬ: в соответствии с комментарием ниже, расположение изображений для SDK 4.1 симулятор:

/ Developer / Platforms / iPhoneSimulator.platform / Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/CoreServices/SpringBoard.app/closebox.png /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/pring/closebox\@2x.png

2 голосов
/ 07 октября 2010

Если вы заинтересованы в рисовании этого с использованием Quartz, следующий код извлекается из CALayer, который я создал для рендеринга такого типа кнопки удаления:

#define SPACETOEXPANDDELETELAYERFORSHADOW 4.0f
#define FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES 0.38

- (void)renderAsVectorInContext:(CGContextRef)context;
{
    if (strokeColor == NULL)
        return;

    CGContextSetLineJoin(context, kCGLineJoinBevel);
    CGContextSetStrokeColorWithColor(context, strokeColor);
    CGContextSetLineWidth(context, strokeWidth);
    CGContextSetLineCap(context, kCGLineCapRound);
    CGRect currentFrame = self.bounds;
    currentFrame = CGRectInset(currentFrame, SPACETOEXPANDDELETELAYERFORSHADOW, SPACETOEXPANDDELETELAYERFORSHADOW);

    CGContextSetShadow(context, CGSizeMake(2.0f, 2.0f), 2.0f);
    CGContextFillEllipseInRect(context, CGRectMake(currentFrame.origin.x + strokeWidth, currentFrame.origin.y + strokeWidth, currentFrame.size.width - (2.0f * strokeWidth), currentFrame.size.height - (2.0f * strokeWidth)));
    CGContextStrokeEllipseInRect(context, CGRectMake(currentFrame.origin.x + strokeWidth, currentFrame.origin.y + strokeWidth, currentFrame.size.width - (2.0f * strokeWidth), currentFrame.size.height - (2.0f * strokeWidth)));

    CGContextSetLineWidth(context, 1.3f * strokeWidth);
    CGContextBeginPath(context);

    CGContextMoveToPoint(context, currentFrame.origin.x + FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES * currentFrame.size.width, currentFrame.origin.y + FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES * currentFrame.size.height);
    CGContextAddLineToPoint(context, currentFrame.origin.x + (1.0f - FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES) * currentFrame.size.width, currentFrame.origin.y + (1.0f - FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES) * currentFrame.size.height);
    CGContextMoveToPoint(context, currentFrame.origin.x + (1.0f - FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES) * currentFrame.size.width, currentFrame.origin.y + FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES * currentFrame.size.height);
    CGContextAddLineToPoint(context, currentFrame.origin.x + FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES * currentFrame.size.width, currentFrame.origin.y + (1.0f - FRACTIONOFVIEWFORSTARTANDSTOPOFCROSSLINES) * currentFrame.size.height);

    CGContextStrokePath(context);
}

в этом случае strokeColor - этобелый CGColorRef, слой 31 x 31, а strokeWidth равен 2,0.

0 голосов
/ 06 октября 2010

Если вы хотите использовать это изображение, просто:

  • Отрежь это откуда-то
  • Сделайте фон прозрачным с помощью фотошопа
  • Добавить изображение в пользовательскую кнопку UIB.

Извините, я не помню ни одного проекта, который бы его использовал ...

...