4

Вопрос по objective-c, ios7, xcode5, flicker, ios – Мерцание края при переходе между экранами ios7

После обновления до xcode 5 я замечаю мерцание по краю экрана при переходе между двумя экранами. Мерцание проявляется в виде вертикальной белой линии на краю кадра. Похоже, это происходит только на ios7.

Переход, который я имею между двумя экранами, происходит через сеанс раскадровки.

ОБНОВИТЬ:

Я исправил проблему, добавив: self.view.clipsToBounds = YES; на мой взгляд.

4 ответа
11

Я разобрался в проблеме. Я должен был установить

clipsToBounds вYES на мои взгляды. Это решает проблему.

Я бы дал +1000 к этому. По сути, у меня в приложении iOS сложная графика, и я начал мерцать вокруг своего UITableViewCell, когда открыл полупрозрачный вид поверх моего вида ... Не знал, с чего начать поиск ... Это решило проблему ... :) БЛАГОДАРЮ ВАС.

от ervinbosenbacher

Большое спасибо!!!

от Anna565

Должен ли я сделать все мои подпредставления? ответьте, пожалуйста

от Arpit B Parekh
0

Эта проблема возникает в iOS7

когда вы пытаетесь обновить пользовательский интерфейс из фона. Чтобы избежать выше, вы должны обновить пользовательский интерфейс, используяGCD Метод, как показано ниже.

dispatch_sync(dispatch_get_main_queue(), ^{
      // Update UI (e.g. Alert, label changes etc)
});

или же

dispatch_async(dispatch_get_main_queue(), ^{
      // Update UI (e.g. Alert, label changes etc)
});

Это обеспечит обновление в основной очереди.

Где я должен поставить dispatch_async? Внутри вновь определенной функции или внутри viewWillAppear, вокруг вызова функции? Вы знаете, могу ли я воспроизвести на симуляторе?

от Atul Bhatia

Возможно, там может быть еще код для обновления пользовательского интерфейса.

от βhargavḯ

view_did_load вызывается в основном потоке правильно? Так что для внесения изменений в лейбл я могу оставить их как есть? Я попытался поместить всю функцию viewWillAppear в dispatch_async (dispatch_get_main_queue), и проблема все еще сохраняется. Также я не могу воспроизвести на симуляторе - есть ли способ легко воспроизвести на симуляторе, чтобы мне было проще тестировать?

от Atul Bhatia

Я разобрался в проблеме. Я должен был установить для clipsToBounds значение YES. Это решает проблему.

от Atul Bhatia
0

У меня была эта проблема с Segues tableView в iOS7

и clipsToBounds BOOL ничего не сделал для меня. Исправление для меня было путем загрузки моего фонового изображения в viewDidAppear, а не viewDidLoad. пример ниже:

- (void)viewDidLoad
{
    [super viewDidLoad];

    tableData = [NSArray arrayWithObjects:@"First", @"Second", @"Third", nil];
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
    UIEdgeInsets inset = UIEdgeInsetsMake(5, 0, 0, 0);
    self.tableView.contentInset = inset;

//Don't load your background image or color here
}


-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [[AppDelegate sharedInstance] setNavTitle:@"Title"];

//load your background image here

    self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage     imageNamed:@"FirstViewBackground"]];
    self.tableView.backgroundColor = [UIColor clearColor];



}
0

Хорошо, я решил проблему в моей ситуации.

У меня был некоторый пользовательский UIView внутри просмотра контейнера. Контейнерный Вид имел Цвет фона (вероятно, я случайно сделал это) установлен в Белый цвет. И между переходами я видел мерцающую белую линию (иногда, случайно). Когда я установил цвет «Вид контейнера» на «По умолчанию», мерцание переходов исчезло.

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