Прозрачное модальное представление о контроллере навигации

Согласно библиотеке MarkerCluster GitHub объекту стиля требуется URL , который перезаписывает imagePath .

Решение:

new MarkerClusterer(this.map, this.map_markers, {
    styles:[{
        url: site_settings.template_directory + '/assets/images/marker-clusterer/m1.png',
        textSize: 12,
        width: 42,
        height: 42,
        textColor: 'white'
    }],
    maxZoom: this.map_max_zoom - 1,
    zoomOnClick: true
})

71
задан user151019 4 July 2013 в 14:42
поделиться

5 ответов

Модальное представление будет охватывать представление, на которое оно помещается, а также навигацию панель для вашего контроллера навигации. Однако, если вы используете подход -presentModalViewController: animated:, то после завершения анимации только что покрытый вид фактически исчезнет, ​​что сделает любую прозрачность вашего модального представления бессмысленной. (Вы можете проверить это, реализовав методы -viewWillDisappear: и -viewDidDisappear: в корневом контроллере представления.)

Вы можете добавить модальное представление непосредственно в иерархию представлений следующим образом:

UIView *modalView =
    [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
modalView.opaque = NO;
modalView.backgroundColor =
    [[UIColor blackColor] colorWithAlphaComponent:0.5f];

UILabel *label = [[[UILabel alloc] init] autorelease];
label.text = @"Modal View";
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
label.opaque = NO;
[label sizeToFit];
[label setCenter:CGPointMake(modalView.frame.size.width / 2,
                                modalView.frame.size.height / 2)];
[modalView addSubview:label];

[self.view addSubview:modalView];

Добавление модального представления в качестве подпредставления к такое корневое представление на самом деле не будет закрывать панель навигации, но будет охватывать все представление под ним. Я попытался поиграть с происхождением кадра, используемого для запуска modalView, но отрицательные значения заставляют его не отображаться. Лучший способ, который я нашел для покрытия всего экрана, помимо строки состояния, - это добавить modalView в качестве подвида самого окна:

TransparentModalViewAppDelegate *delegate = (TransparentModalViewAppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.window addSubview:modalView];
109
ответ дан 24 November 2019 в 12:55
поделиться

Проще всего добиться этого, установив «OverlayViewController», который находится над всеми другими подпредставлениями моего окна или корневого представления. Настройте это в делегате приложения или в контроллере корневого представления и сделайте OverlayViewController синглтоном, чтобы к нему можно было получить доступ из любого места в вашем коде или иерархии контроллеров представления. Затем вы можете вызывать методы для отображения модальных представлений, индикаторов активности и т. Д., Когда вам нужно, и они потенциально могут покрывать любые панели вкладок или контроллеры навигации.

Пример кода для корневого контроллера представления:

- (void)viewDidLoad {
  OverlayViewController *o = [OverlayViewController sharedOverlayViewController];
  [self.view addSubview:o.view];
}

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

[[OverlayViewController sharedOverlayViewController] presentModalViewController:myModalViewController animated:YES];

Я фактически не использовал -presentModalViewController: animated: с моим OverlayViewController, но я ожидаю, что это будет работать нормально.

См. также: Как выглядит ваш синглтон Objective-C?

12
ответ дан 24 November 2019 в 12:55
поделиться

Этот пост о отображения полупрозрачного представления «Загрузка ...» может дать несколько советов о том, как действовать дальше.

3
ответ дан 24 November 2019 в 12:55
поделиться

V-модель широко используется в моей компании. Я должен добавить, что, IMHO, там есть лучшие модели развития, но V-Model все еще может эффективно использоваться при разработке крупномасштабных систем, где вы НЕ используете итеративное развитие.

Тем не менее, я думаю, что управляемая тестами разработка все еще может быть применена к V-Model, как часть фазы тестирования блока и даже на фазе интеграционного тестирования , пока вы можете автоматизировать это как часть цикла разработки.

V-Model, однако, рассматривает тестирование системы как испытание, которое происходит после разработки продукта считается завершенным, поэтому управляемая тестом разработка не применяется. Убедитесь, что вы можете автоматизировать его с помощью инструментов, сценариев или программ, но вы больше не разрабатываете свой код. В системных тестах вы больше не заботитесь о коде, только о спецификациях. Это происходит потому, что единицы тестирования могут быть неполными.

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

Но давайте вернемся к вопросу. Я только что сказал, что TDD и автоматизация могут использоваться в качестве реализации этапов тестирования в V-Model. Таким образом, если вы можете использовать V-Model тестирование с Agile разработки, как вы видели презентация подтвердил, то я могу также использовать TDD и методы автоматизации.

Однако я не уверен, что вы захотите. Я не знаю, как можно применить V-модель к Agile или будет ли она когерентной, поскольку V-модель не является гибкой .

-121--3653538-

Внутри цикла используется один и тот же экземпляр объекта Тэгов , поэтому каждое обновление TagName выполняется по одной и той же ссылке. Переместите объявление внутрь цикла, чтобы получить новый объект на каждом проходе цикла:

foreach (string t in tagList)
{
    Tag _tag = new Tag(); // create new instance for every iteration

    _tag.tagName = t;
    tags.Add(_tag);
}

Для бонусной части - при изменении Тэга с класса на структуру операции копирования (это происходит при вызове tags.Add (_ тэг) ) копирует целый экземпляр (по существу, создавая новый) в отличие от исходного класса , когда только ссылка на один и тот же экземпляр копируется в параметр вызова, а затем в элемент списка (см. C # pass by value vs. pass by reference для пояснения того, как struct передается вызовам метода).

-121--2311072-

Эффект прозрачного/полупрозрачного режима просмотра можно получить, наложив прозрачную/полупрозрачную кнопку как на вид, так и на панель навигации.

Доступ к панели навигации осуществляется через свойство navigationBar контроллера UINavigationController.

Я обнаружил, что UIButton в отличие от UILabel будет ловить события мыши - следовательно, давая правильное модальное поведение.

0
ответ дан 24 November 2019 в 12:55
поделиться

Я наконец-то добился этого для интерфейса навигации или панели вкладок, объединив контроллер представления наложения (см. Ответ pix0r), который скрывается / не скрывается перед скрытием или отображением контроллера представления на основе этого очень хорошего блога сообщение .

Что касается контроллера представления, совет состоит в том, чтобы сделать его фоновое представление clearColor , тогда полупрозрачное перекрывающееся представление станет видимым, и любые представления, добавленные в качестве подпредставлений в контроллере представления, будут впереди и наиболее главное непрозрачный.

2
ответ дан 24 November 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: