Подтвердить что ты не робот

Пользовательское одобрение UISwitch & App Store

После некоторого чтения я обнаружил, что вы можете настроить текст и цвет в элементе управления UISwitch. Мне интересно, если эти методы вызовут проблемы с попыткой получить одобрение моего приложения и включить его в App Store.

Пример кода, взятого из Пример кода Cookbook для разработчиков iPhone:

// Custom font, color
switchView = [[UICustomSwitch alloc] initWithFrame:CGRectZero];
[switchView setCenter:CGPointMake(160.0f,260.0f)];
[switchView setLeftLabelText: @"Foo"];
[switchView setRightLabelText: @"Bar"];
[[switchView rightLabel] setFont:[UIFont fontWithName:@"Georgia" size:16.0f]];
[[switchView leftLabel] setFont:[UIFont fontWithName:@"Georgia" size:16.0f]];
[[switchView leftLabel] setTextColor:[UIColor yellowColor]]; 
4b9b3361

Ответ 1

это не создаст проблем с отправкой в ​​магазин приложений. Вы можете использовать настраиваемые элементы управления или измененные версии встроенных элементов управления, пока вы не используете какие-либо частные (недокументированные) API для создания/изменения этих виджетов.

Ответ 2

Вам может понравиться моя реализация пользовательского переключателя (с открытым исходным кодом и свободного использования)... он позволяет настроить переключатель для отображения любого текста или легко подклассировать его, чтобы нарисовать ваши собственные изображения в треке.... http://osiris.laya.com/projects/rcswitch/

Этот переключатель упрощает рисование изображения вместо текста: подкласс класса основного коммутатора и переопределить метод рисования, подобный этому, и ваше изображение будет автоматически анимировано:

- (void)drawUnderlayersInRect:(CGRect)aRect withOffset:(float)offset inTrackWidth:(float)trackWidth
{
    [onImage drawAtPoint:CGPointMake(floorf(aRect.origin.x + 13 + (offset - trackWidth)), floorf((self.bounds.size.height - onImage.size.height) / 2.0))];
    [offImage drawAtPoint:CGPointMake(floorf(aRect.origin.x + 15.0 + (offset + trackWidth)), ceilf((self.bounds.size.height - offImage.size.height) / 2.0))];
}

Ответ 3

Взгляните на пользовательский элемент управления UISwitch, который я создал, чтобы позволить мне изменить цвет фона элемента управления. Вы можете использовать тот же метод, чтобы очень легко изменить текст, шрифт или цвет текста.

пользовательский контроль uiswitch

Код доступен в Github и включает в себя PSD, который используется для создания трех разных png файлов, которые использует элемент управления. Вы можете изменить содержимое psd для воссоздания png файлов в любом формате. Поменяйте их на контроль и пройдите.

Ответ 4

Я просто создал это представление и увидел, что вы сомневаетесь

надеюсь, что это поможет

.h файл:

#import <UIKit/UIKit.h>

@interface EDSwitch : UIView
{
    UIButton* onButton,*offButton;
    UIImageView* bg;
}

- (id)initWithText:(NSString*)on andText:(NSString*)off andDelegate:(id)delegate andOnSelector:(SEL)onSelector andOffSelector:(SEL)offSelector andBackgroundImage:(UIImage*)bgImage andStartingValue:(BOOL)b;

@end

и .m файл:

#import "EDSwitch.h"

@implementation EDSwitch

- (id)initWithText:(NSString*)on andText:(NSString*)off andDelegate:(id)delegate     andOnSelector:(SEL)onSelector andOffSelector:(SEL)offSelector andBackgroundImage:     (UIImage*)bgImage andStartingValue:(BOOL)b
{
self = [super initWithFrame:CGRectZero];
if (self) {
    UILabel* onLabel = [[UILabel alloc] initWithFrame:CGRectMake(2, 8, 50, 20)];
    onLabel.text = on ;
    onLabel.tag = 1;
    onLabel.font = [UIFont fontWithName:kCalibri size:15];
    onLabel.textAlignment = UITextAlignmentCenter;
    onLabel.textColor = [UIColor colorFromHexString:@"#009dd0"];
    onLabel.backgroundColor = [UIColor clearColor];
    [onLabel sizeToFit];
    [onLabel setWidth:onLabel.frame.size.width + 4];


    UILabel* offLabel = [[UILabel alloc] initWithFrame:CGRectMake(2, 8, 50, 20)];
    offLabel.text = off ;
    offLabel.tag = 1;
    offLabel.textAlignment = UITextAlignmentCenter;
    offLabel.font = [UIFont fontWithName:kCalibri size:15];
    offLabel.textColor = [UIColor colorFromHexString:@"#009dd0"];
    offLabel.backgroundColor = [UIColor clearColor];
    [offLabel sizeToFit];
    [offLabel setWidth:offLabel.frame.size.width + 4];

    float high = MAX([offLabel.text sizeWithFont:offLabel.font].width,[onLabel.text sizeWithFont:onLabel.font].width) + 10;

    onButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [onButton addTarget:self action:@selector(toggled:) forControlEvents:UIControlEventTouchUpInside];
    [onButton addTarget:delegate action:onSelector forControlEvents:UIControlEventTouchUpInside];
    offButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [offButton addTarget:self action:@selector(toggled:) forControlEvents:UIControlEventTouchUpInside];
    [offButton addTarget:delegate action:offSelector forControlEvents:UIControlEventTouchUpInside];

    [onButton setWidth:high];
    [onButton setX:0];
    [onButton addSubview:onLabel];
    [onLabel setWidth:high];
    [onLabel setX:0];

    [offButton setWidth:high];
    [offButton addSubview:offLabel];
    [offButton setX:high];
    [offLabel setWidth:high];
    [offLabel setX:0];

    bg = [[UIImageView alloc] initWithImage:bgImage];

    self.frame = CGRectMake(200, 200 , (high*2), 34);
    self.layer.borderColor = [[[UIColor colorFromHexString:@"#009dd0"] colorWithAlphaComponent:0.5] CGColor];
    self.layer.borderWidth = 0.5;
    self.layer.cornerRadius = 5;
    [self setX:[UIApplication sharedApplication].keyWindow.frame.size.width - self.frame.size.width - 8];

    [self addSubview:bg];

    [bg setWidth:[self getWidth]];
    [bg setHeight:[self getHeight]];

    [self addSubview:onButton];
    [self addSubview:offButton];

    [onButton setHeight:[self getHeight]];
    [offButton setHeight:[self getHeight]];

    if(b){
        [onButton setBackgroundColor:[UIColor clearColor]];
        [offButton setBackgroundColor:[UIColor whiteColor]];
    }
    else{
        [onButton setBackgroundColor:[UIColor whiteColor]];
        [offButton setBackgroundColor:[UIColor clearColor]];
    }
}
return self;
}

-(void)toggled:(UIButton*)sender{
if(sender == onButton){
    UILabel* l = (UILabel*)[onButton viewWithTag:1];
    l.textColor = [UIColor grayColor];
    [onButton setBackgroundColor:[UIColor clearColor]];
    l = (UILabel*)[offButton viewWithTag:1];
    l.textColor = [UIColor colorFromHexString:@"#009dd0"];
    [offButton setBackgroundColor:[UIColor whiteColor]];

}
else{
    UILabel* l = (UILabel*)[offButton viewWithTag:1];
    l.textColor = [UIColor grayColor];
    [offButton setBackgroundColor:[UIColor clearColor]];
    l = (UILabel*)[onButton viewWithTag:1];
    l.textColor = [UIColor colorFromHexString:@"#009dd0"];
    [onButton setBackgroundColor:[UIColor whiteColor]];
}
}

@end

использование:

    [[UIApplication sharedApplication].keyWindow addSubview:[[EDSwitch alloc] initWithText:@"aksdjaksdjh" andText:@"dasjdsaj" andDelegate:self andOnSelector:@selector(logon) andOffSelector:@selector(logoff) andBackgroundImage:[UIImage imageNamed:@"toggleBottom.png"] andStartingValue:YES]];

жить долго и процветать,

eiran

Ответ 5

В Руководстве по человеческому интерфейсу Apple, в документации Switch, Apple заявляет:

Используйте переключатель в строке таблицы, чтобы дать пользователям два простых, диаметрально противоположные варианты, которые определяют состояние чего-то, например, да/нет или вкл/выкл. Используйте предсказуемую пару значений, чтобы пользователи не имели для перемещения элемента управления, чтобы узнать, что такое другое значение.

Итак, да, это прекрасно, чтобы изменить текст, пока вы используете предсказуемую пару значений (например, да/нет).

Ответ 6

Нет необходимости в подклассе UISwitch. Довольно простое решение, которое я реализовал, представляет собой подклассу UIView и на сенсорном событии, переключенном между двумя изображениями (ВКЛ/ВЫКЛ) с переходом слайда, который есть все.

Отношения Dhanesh

Ответ 7

Из документации Apple: -

Вы используете класс UISwitch для создания и управления кнопками включения/выключения см., например, в настройках (Настройки) для таких служб, как Авиа режим. Эти объекты называются коммутаторами.

Класс UISwitch объявляет свойство и метод для управления его вкл/выкл. Как и в случае с UISlider, когда пользователь манипулирует коммутатором control ( "переворачивает" его) генерируется событие UIControlEventValueChanged, в результате чего управление (если правильно настроено) отправляет сообщение о действии.

Класс UISwitch не настраивается.

Apple заявляет, что они не настраиваются, что может означать отклонение вашего приложения.

Ответ 8

Это приведет к проблемам с одобрением вашего приложения. спросите меня, как я знаю: P

Недавно у Apple появилась неприятная заметка от Apple. Мы находимся в процессе поиска альтернативы.