;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Seu iPhone é compatível com o novo iOS 16? Veja como descobrir

Telas do novo iOS 16 - Divulgação
Telas do novo iOS 16 Imagem: Divulgação

Siouxsie Rigueiras

De Tilt, em São Paulo

05/09/2022 13h05Atualizada em 07/09/2022 13h28

A nova versão do sistema operacional do iPhone deve estar próxima de ser liberada para o público em geral. Anunciada em junho deste ano pela Apple, o iOS 16 possivelmente será disponibilizado a partir do lançamento do iPhone 14, previsto para esta quarta-feira (7).

A empresa realiza nesta semana o seu evento anual de lançamento de produtos. Além de quatro novos celulares, é esperada a chegada de uma nova geração de fones de ouvido e novos relógios Apple Watch.

iOS 16 só para celulares menos antigos

Com a liberação do iOS 16, alguns celulares antigos da empresa se tornarão incompatíveis com suas novas funcionalidades (veja mais no final do texto). Além disso, deixam de receber recursos de segurança. Aplicativos mais recentes também podem parar de funcionar com o ar dos anos.

De acordo com a Apple, o iOS 16 será compatível com celulares a partir do iPhone 8 em diante. Sendo assim, iPhone 6S, iPhone 6S Plus, iPhone SE (primeira geração), iPhone 7 e iPhone 7 Plus (que chegaram a receber o iOS 15, lançado no ano ado) não terão a atualização de 2022.

Como descobrir a versão do iOS do iPhone

  • Entre em Ajustes;
  • Clique em Geral;
  • Vá em Sobre;
  • Em "Nome do Modelo" você verá o modelo que possui. No item "Versão do iOS" você saberá em qual número o sistema operacional do seu aparelho está.

Se o seu celular é superior ou igual ao iPhone 8, indicações para atualizar para o iOS 16 aparecerão assim que ele for liberado em:

  • Ajustes;
  • Geral;
  • Atualização de software.

Veja lista completa de iPhone que terão o iOS 16

iOS 16: o que tem de novo?

Alguns destaques do novo sistema operacional são:

Novo visual

iPhone terá indicações de estilos (como filtros) para a área de bloqueio de tela e plano de fundo. Será possível ainda customizar tamanho e cores de fontes.

Notificações

Serão mais discretas e concentradas na parte inferior da tela. Assim, não vão cobrir completamente a tela inicial.

App de mensagens

Será possível editar mensagens já enviadas e cancelar o envio delas se necessário: como ao escrever algo errado ou se arrepender do que foi enviado — a pessoa será notificada de que o conteúdo teve alguma edição

Digitação por voz

Melhorias na parte de digitação por voz, com o celular reconhecendo pontuação automática (como vírgula e ponto final).

*Com texto de Guilherme Tagiaroli, Lucas Carvalho e Bruna Souza Cruz