Edgesforextendedlayout modelos de storyboard
Eu tenho dificuldade em adicionar uma subview UIView de dentro do método viewDidLoad de um UITableViewController Mas você pode ver as linhas de células da tabela sangram através do progView UIView. Eu tentei essa abordagem: que é uma tentativa de adicionar o progView UIView à superview, acima da visão atual. Quando eu tento isso, o UIView nunca aparece. A seguir, a última tentativa: O resultado é o mesmo que self. view addSubview: self. progView O UIView aparece, mas aparentemente atrás da tabela. Com o tempo, comecei a me afastar do uso de controladores de visualização de tabela, exceto quando a visualização deveria ser exclusivamente uma lista e você quer impor isso. Se você adicionar uma exibição de tabela a um controlador de exibição regular e configurar a fonte de dados e delegar a si mesmo, obterá uma configuração muito mais flexível, em que a tableview é apenas outra exibição na exibição principal, não a própria exibição principal. Isso livrará você de muitas das limitações internas do controlador de exibição de tabela. ndash Daniel Saidi 28 de outubro às 7:19 Isso é realmente possível e fácil - requer apenas um pouco de religação. Eu encontrei uma situação semelhante e codifiquei isso para permitir que eu adicionasse telas de carregamento ao topo das minhas visualizações de tabela. Essa abordagem também permite usar células da tabela estática com seu próprio conteúdo. Se o controlador for um UITableViewController em um Storyboard ou XIB e você desejar reatribuir self. view a um UIView padrão enquanto preserva a visualização de tabela existente: Adicione essas variáveis de instância ao seu arquivo de cabeçalho: Em seu Storyboard ou arquivo XIB: Conecte o tableView em o UITableViewController para a variável tableViewReference. Em seguida, no seu arquivo de implementação: Embora possa parecer estranho, o UITableViewController está fazendo muitas coisas estranhas com referências nos bastidores. Você precisa esperar até viewDidLoad para fazer a troca. Após esse ponto, os acessadores apontarão para o UIView e o UITableView corretos. Uso: Algo como adicionar um myView do UIView na frente da visualização de tabela, sem myView rolar com o conteúdo de visualizações de tabela. Nota: Esta resposta foi editada depois que foi apontado que a solução continha um código paradoxal limítrofe. O UITableViewController faz coisas estranhas às referências que possui. Alguns testes mais cuidadosos derivaram essa resposta mais simples :) Consegui adicionar uma subvisualização em cima de um uitableviewcontroller usando a contenção uiviewcontroller. UITableViewController é realmente muito útil quando se trata de células estáticas e este é provavelmente o único momento em que a resposta comum apenas usar uitableview pode realmente não viável. Então é assim que eu faço. dê ao seu UITableViewController um identificador do StoryBoard, como MyStaticTableView, crie uma nova subclasse UIViewController e chame UITableViewControllerContainer. Coloque este controlador no lugar do seu UITableViewController dentro do seu storyboard, adicione uma subvisualização ao novo controlador e vincule-o a uma saída chamada viewcontainer no seu método UITableViewControllerContainer viewDidLoad Problemas que você pode ter: se você tem espaço extra, então certifique-se de adicionar o sinalizador que quer tela cheia ao seu UITableViewController se ele não redimensionar corretamente em seu UITableViewControllerContainer neste ponto do seu UITableViewController você pode acessar sua visão de container diretamente com o que você adicionar será mostrado na parte superior do seu controlador table view Solução para swift (equivalente a Daniel Saidi): Se o seu controller é um UITableViewController em um Storyboard ou XIB e você deseja reatribuir self. view a um UIView padrão enquanto preserva sua visão de tabela existente: Então na sua implementa arquivo de configuração: Adicione essas variáveis de instância ao arquivo de controlador de exibição de tabela: No seu arquivo de storyboard ou XIB: Conecte o tableView no UITableViewController à variável tableViewReference. Em seguida, você poderá adicionar exibições secundárias da seguinte maneira: answer Sep 2 at 10:04 Your Answer 2016 Stack Exchange, Inc Fundada 94 artigos na Base de Conhecimento Swift para esta categoria: Se você tiver uma guia Mais no controlador da barra de guias, obterá automaticamente um botão Editar para que os usuários possam arrastar as guias para personalizar a interface do usuário. Na verdade, isso não salva a ordenação de guias para você, o que significa que as guias serão revertidas na próxima execução, a menos que você mesmo persista as escolhas dos usuários, mas faz tudo o mais por você. Continue Reading gtgt Este é um erro comum, mas é facilmente corrigido. Há dois motivos principais pelos quais as visualizações de tabela não retornam células, mas fornecem mensagens de erro diferentes. Se você receber um erro como este. Continue Reading gtgt Este erro geralmente significa que há um problema com seus protótipos de célula. Há dois motivos principais pelos quais as visualizações de tabela não retornam células, mas fornecem mensagens de erro diferentes. Se você receber um erro como este. Continue lendo gtgt Normalmente, tocar em uma guia em um UITabBar mostra essa guia, mas geralmente é o caso de você querer substituir esse comportamento, por exemplo, para exibir uma exibição de maneira modal. Se você estiver usando um dos modelos internos de storyboard Xcodes para criar sua interface de usuário, não é imediatamente óbvio como fazer isso, mas felizmente não é tão difícil usar a abordagem abaixo. Continue Reading gtgt Os controles segmentados dão a cada segmento largura igual por padrão, o que é esteticamente agradável quando você tem espaço de sobra, mas tecnicamente irritante quando o espaço é pequeno. Em vez de tentar espremer demais em um espaço pequeno, você tem duas opções: definir larguras de segmento personalizadas ou pedir ao iOS para dimensioná-las individualmente para você. Continue lendo gtgt As barras de navegação são um dos componentes de interface de usuário mais comuns no iOS, portanto, poder adicionar botões a elas é algo que você fará muito. Você pode adicionar botões à esquerda e à direita de uma barra de navegação e, a partir do iOS 5.0, pode adicionar mais de um a cada lado. Continue lendo gtgt Há duas etapas para adicionar um botão de trabalho a uma célula de exibição de tabela. O primeiro passo é adicionar um botão como este. Continue Reading gtgt A maioria dos UIBarButtonItems contém um ícone ou algum texto, mas eles podem fazer muito mais, você pode inserir qualquer tipo de subclasse UIView dentro de um item de botão de barra e colocar esse botão em uma barra de navegação ou barra de ferramentas normalmente seria. Continue Reading gtgt Há um tipo especial de UIBarButtonItem chamado flexibleSpace, e isso funciona como uma mola entre outros botões, empurrando-os para um lado. Um espaço flexível sempre se expandirá para ocupar o máximo de espaço possível, dividindo o espaço igualmente entre outros espaços flexíveis, se existirem. Continue lendo gtgt Você pode usar os cabeçalhos de seção de tabela do iOS integrados retornando um valor de titleForHeaderInSection como este. Continue lendo O gtgt iOS pode gerar dinamicamente sombras para qualquer UIView, e essas sombras se ajustam automaticamente para se ajustar à forma do item em questão, mesmo seguindo as curvas do texto dentro de um UILabel. Esta funcionalidade está embutida, então tudo que você precisa fazer é configurar suas propriedades, e há quatro que você precisa se preocupar. Continuar lendo gtgt Há duas maneiras de adicionar um item de atalho para o 3D Touch: você pode registrar uma lista de itens estáticos que sempre são exibidos ou criar uma lista dinâmica no código com base nas informações do usuário. Continue Reading gtgt A classe UIAlertController do iOS 8.0 permite adicionar tantos campos de texto quantos forem necessários e você pode ler o valor desses campos de texto quando o usuário toca em um botão. Continue Reading gtgt A partir do iOS 8.0, efeitos visuais como blur e vibrancy são muito fáceis porque a Apple fornece uma subclasse UIView integrada que faz todo o trabalho pesado: o UIVisualEffectView. Por exemplo, se você quiser desfocar uma imagem, você usaria esse código. Continue Reading O gtgt iOS tem uma solução simples e bonita para lidar com gráficos Retina e Retina HD, e na verdade ele faz quase todo o trabalho para você. Tudo o que você precisa fazer é nomear seus recursos corretamente. Continue Reading gtgt Se a interface do usuário exibir o teclado, responda ajustando o layout para que todas as partes ainda estejam visíveis. Se você estiver usando um UIScrollView ou qualquer classe que tenha uma visualização de rolagem como parte de seu layout (exibições de tabela e exibições de texto, por exemplo), isso significa ajustar a propriedade contentInset para considerar o teclado. Continue Reading gtgt Todas as visualizações (incluindo aquelas que não contêm imagens) têm um modo de conteúdo que afeta a maneira como elas desenham seu conteúdo. O padrão é Escalar para preencher porque é mais rápido: o conteúdo da exibição é aumentado (ou diminuído) para se ajustar ao espaço disponível. Mas há dois outros que você usará bastante: Aspect Fit e Aspect Fill. Continue Reading A animação do gtgt no iOS é feita iniciando um bloco de animação e informando ao iOS quais alterações você deseja fazer. Como o bloco de animação está ativo, essas mudanças não acontecerão imediatamente. O iOS as executará sem problemas durante o tempo especificado, para que você não precise se preocupar quando terminar ou quais são todos os estados intermediários. Continue Reading O gtgt iOS 10 introduziu uma nova classe de animação baseada em closures na forma de UIViewPropertyAnimator. Entre outras coisas, permite que você ajuste interativamente a posição de uma animação, fazendo com que ela salte para qualquer ponto no tempo em que precisamos de uma técnica comumente chamada de scrubbing. Continue Reading gtgt As animações do Spring funcionam mudando de um estado inicial para um estado final, com um leve overshoot e quique no final. Por exemplo, se você deseja animar uma exibição movendo de X: 0 para X: 100, ela pode se mover para X: 120 antes de voltar para X: 80, depois X: 110 e finalmente X: 100, como se a animação fosse ligado a uma mola. Continue Reading gtgt Uma alteração de classe de tamanho geralmente é acionada pelo usuário girando o dispositivo, mas também pode acontecer, por exemplo, ao usar a nova multitarefa do iOS 9.0 para ajustar divisões de janela. Sua interface do usuário precisa ficar ótima em todas as classes de tamanho suportadas, o que significa que você cria várias variações de seus layouts dentro do Interface Builder (essa é a rota preferencial) ou faz alterações no código. Continue Reading gtgt O UIKit desenha as vistas de trás para frente, o que significa que as vistas mais altas da pilha são desenhadas em cima daquelas mais abaixo. Se você quiser trazer uma subvisualização para a frente, existe um método só para você: bringSubview (toFront :). Aqui está um exemplo. Continue Reading gtgt É comum ajustar inserções de conteúdo de uma visualização de rolagem ou qualquer classe que incorpora uma (visualização de tabela, visualização de texto, etc.) para que você controle o mecanismo de rolagem com precisão, mas sempre que alterar o conteúdo, é uma boa ideia altere a inserção do indicador de rolagem: a barra indicadora visual à direita que mostra aos usuários quanto eles ainda precisam rolar. Continue Reading gtgt Você pode desenhar no dicionário do iOS em apenas algumas linhas de código graças à classe UITextChecker. Diga-lhe o intervalo da string que você deseja verificar (pode ser a string inteira ou apenas parte dela), depois peça para informar onde está o erro de ortografia. Se disser que não há erros, a palavra é boa. Heres o código. Continue Reading gtgt Cada visualização tem seu próprio sistema de coordenadas, o que significa que se eu tocar em um botão e perguntar ao iOS onde toquei, ele me dirá onde eu toquei em relação ao canto superior esquerdo do botão. Isso geralmente é o que você quer, mas se você quiser traduzir uma posição em uma visão em uma posição, é fácil o suficiente para fazer. Continue Reading gtgt Quando o iBooks foi lançado pela primeira vez no iOS 3.2, o efeito de curvatura da página era quase viciante: movia-se tão fluentemente com o dedo que parecia que você estava tocando papel real. A partir do iOS 5.0 nesta página, o efeito curl está disponível para todos os desenvolvedores como parte da classe UIPageViewController. Sua API não é imediatamente óbvia para os novatos, então, vou dar-lhe um exemplo completo. Continue Reading gtgt Os efeitos de paralaxe são padrão desde o iOS 7.0, e a classe UIInterpolatingMotionEffect facilita isso suavizando automaticamente a entrada do acelerômetro para que suas visualizações possam se ajustar aos dados de inclinação. Continue lendo gtgt Embora as complexidades do Auto Layout tornem algo que a maioria das pessoas prefira lidar com o uso do Interface Builder, ele possui alguns truques interessantes se preferir trabalhar em código. Um desses truques é chamado Visual Format Language (VFL) e permite que você use arte ASCII para dizer ao iOS como você deseja que suas exibições sejam exibidas. Continue Reading O gtgt iOS possui um sistema de menu embutido que, apesar de útil, na verdade não é muito útil porque os usuários não esperam vê-lo, os desenvolvedores não o usam, tornando ainda menos provável que os usuários esperem vê-lo. Continue Reading gtgt Exibir uma folha de ação UIAlertController no iPad não é tão fácil quanto no iPhone. A razão para isso é simples: no iPhone, a folha de ação desliza para cima, apropriando-se efetivamente da atenção do usuário até ser dispensada, enquanto no iPad ele pode ser exibido em qualquer lugar. Na verdade, se você tentar e mostrar um em um iPad como esse, seu aplicativo trava. Continue Reading gtgt A partir do iOS 8.0, há uma maneira fácil de personalizar a lista de botões que aparecem quando o usuário passa da direita para a esquerda: editActionsForRowAt. Retorna uma matriz de objetos UITableViewRowAction que possuem títulos e estilos (e também cores de fundo, se você quiser personalizar sua aparência), e o iOS faz o resto. Continue Reading gtgt Quando um usuário clica em uma linha de visualização de tabela, ele é automaticamente realçado pelo iOS e, freqüentemente, usamos essa ação para mostrar outro controlador de visualização com informações mais detalhadas. Quando o usuário voltar, no entanto, você provavelmente desejará que a sua seleção desapareça para que ele não permaneça selecionado, e se você estiver usando um UITableViewController que seja fácil de fazer com clearsSelectionOnViewWillAppear. Continue Reading gtgt A classe iOS UITapGestureRecognizer possui uma maneira integrada de detectar um toque duplo em qualquer visualização. Tudo o que você precisa fazer é criar o reconhecedor, definir sua propriedade numberOfTapsRequired como 2 e adicioná-lo à exibição que deseja monitorar. Continue Reading gtgt Detectar gestos de panela é bastante fácil com um UIPanGestureRecognizer regular, mas há um reconhecedor de gestos especial para usar se você quiser detectar o usuário deslizando pela borda da tela. O exemplo abaixo demonstra a detecção do usuário passando pela borda esquerda da tela. Continue lendo gtgt Você provavelmente já sabe que viewWillDisappear () é chamado quando um controlador de visualização está prestes a desaparecer e isso também é chamado quando o usuário toca no botão Voltar em um controlador de navegação. O problema é que o mesmo método é chamado quando o usuário avança, ou seja, quando você pressiona outro controlador de visualização na pilha. Continue Reading gtgt Não há uma maneira integrada de reduzir a intensidade da tela, a menos que você esteja apresentando um controlador de visualização. Nesse momento, o iOS escurece o controlador de segundo plano para você. Continue lendo gtgt Você sempre foi capaz de ter visualizações personalizadas dentro de seus aplicativos, mas se você está tendo dificuldade em visualizar como eles olham para o tempo de design, então você deve tentar o IBDesignable: ele permite ver exatamente como suas views customizadas estão dentro do IB, e se você combina isso com o IBInspectable, você também pode ajustar o design de suas visualizações. Continue Reading gtgt Quando o usuário começa a tocar em uma tela do iOS, toquesBegan () é imediatamente chamado com um conjunto de UITouches. Se você quer encontrar onde o usuário tocou, você precisa pegar um desses toques e usar a localização (em :) nele, assim. Continue Reading gtgt Se você precisa de uma maneira rápida de obter uma visão dentro de uma hierarquia de visão complicada, você está procurando por viewWithTag () dando a tag para encontrar e uma visão para pesquisar, e este método irá procurar todas as subvisualizações, e todas sub-subvisualiza, e assim por diante, até encontrar uma visão com o número da tag correspondente. O método retorna um UIView opcional porque ele pode não encontrar uma visualização com essa tag, portanto, desembrulhe-o com cuidado. Continuar lendo O gtgt iOS possui uma maneira integrada de fazer a transição entre as visualizações, e você pode usá-lo para produzir desvios em 3D em apenas algumas linhas de código. Aqui está um exemplo básico que oscila entre duas visualizações. Continue Reading O gtgt iOS 10 introduz novas formas de gerar feedback tátil usando padrões de vibração predefinidos compartilhados por todos os aplicativos, ajudando os usuários a entenderem que vários tipos de feedback têm significado especial. O núcleo dessa funcionalidade é fornecido pelo UIFeedbackGenerator, mas isso é apenas uma classe abstrata. As três classes que realmente interessam são UINotificationFeedbackGenerator, UIImpactFeedbackGenerator e UISelectionFeedbackGenerator. Continue Reading gtgt Você pode chamar setBackgroundImage () em qualquer barra de navegação, fornecendo uma imagem para usar e as métricas de barras que deseja que isso afete, e pronto. As métricas de barra deixaram você especificar os tamanhos das barras que você deseja alterar: isso deve ser feito por todas as barras, apenas por barras de tamanho de telefone ou apenas por barras de tamanho de telefone na paisagem. Continue Reading gtgt Você não pode fazer isso UIStackView é uma visão sem desenho, o que significa que drawRect () nunca é chamado e sua cor de fundo é ignorada. Se você deseja desesperadamente uma cor de plano de fundo, considere colocar a vista de pilha dentro de outro UIView e dar a essa vista uma cor de plano de fundo. Continue lendo gtgt Desde o iOS 7.0, as células de exibição de tabela ficaram cinza quando tocadas, mesmo quando você especificamente disse ao Interface Builder que queria que elas fossem azuis. Não se preocupe, porém: é fácil mudar, contanto que você não se importe em escrever três linhas de código. Especificamente, você precisa adicionar algo assim ao seu método cellForRowAt. Continue Reading gtgt O texto do usuário em um UITextField é visível por padrão, mas você pode ativar a funcionalidade de senha de ocultação de texto do iOS simplesmente configurando seus campos de texto como propriedade isSecureTextEntry como true. Continue Reading gtgt O iOS fornece ao UINavigationController uma propriedade simples que mascara um comportamento complexo. Se você definir o hidesBarsOnSwipe como verdadeiro para qualquer UINavigationController, o iOS adicionará automaticamente um reconhecedor de gesto de toque à sua exibição para manipular a ocultação (e exibição) da barra de navegação conforme necessário. Isso significa que você pode imitar o comportamento da barra de navegação do Safaris em apenas uma linha de código, como esta. Continue Reading gtgt A partir do iOS 8.0, é fácil tornar uma barra de navegação oculta automaticamente quando o usuário toca na tela, mas apenas quando faz parte de um UINavigationController. Quando definida como true, a propriedade hidesBarsOnTap de um controlador de navegação adiciona automaticamente um reconhecedor de gestos de toque à sua exibição para manipular a ocultação (e exibição) da barra de navegação conforme necessário. Continue lendo gtgt Você pode ocultar a barra de status em qualquer ou todos os seus controladores de visualização apenas adicionando este código. Continue Reading gtgt Assim que você definir a propriedade de edição de um UITableView como true, suas células deixarão de ser tocadas. Isso geralmente é uma boa ideia, porque se um usuário habilitar explicitamente o modo de edição, ele provavelmente desejará excluir ou mover coisas, e isso só será chato se puder selecionar linhas por acidente. Continue Reading gtgt Se você tiver um UITextField ou UITextView e desejar impedir que os usuários digitem mais de um determinado número de letras, será necessário definir a si mesmo como o representante para o controle e implementar shouldChangeCharactersIn (para campos de texto) ou shouldChangeTextIn (para texto visualizações). Continue Reading gtgt Se você deseja gerar HTML localmente e mostrá-lo dentro do seu aplicativo, é fácil fazê-lo tanto no UIWebView quanto no WKWebView. Primeiro, aqui está o código para o UIWebView. Continue Reading gtgt No nível do projeto, você pode configurar quais orientações seu aplicativo inteiro deve suportar, mas, às vezes, você deseja que os controladores de visualização individuais suportem um subconjunto deles. Por exemplo, você pode querer que a maioria do seu aplicativo funcione em qualquer orientação, mas uma parte funcione especificamente em retrato. Continue Reading gtgt Se você quiser uma maneira fácil de informar aos usuários quando um UIButton foi tocado, tente definir sua propriedade showsTouchWhenHighlighted como true. Isso renderiza um efeito de brilho circular atrás do botão quando ele é tocado, o que é particularmente eficaz em botões somente de texto. Continue Reading gtgt Se você deseja permitir que os usuários limpem sua entrada em um UITextField, a abordagem padrão é adicionar um botão claro à borda direita do campo de texto. Isso pode ser feito de duas maneiras, dependendo do efeito desejado. Continue Reading gtgt Os controladores de visualização dividida no iPad têm um modo de exibição automática, o que significa que na paisagem os controladores de visualização à esquerda e à direita estão visíveis, mas no modo retrato a controladora da vista esquerda desliza para fora conforme necessário. Continue Reading gtgt Todas as células de exibição de tabela têm um separador abaixo delas por padrão, e esse separador gosta de começar um pouco a partir da borda esquerda da tela por motivos estilísticos. Se isso colidir com a sua própria estética pessoal, você pode pensar que é fácil de remover, mas a Apple tornou o assunto bastante confuso, mudando de idéia mais de uma vez. Continue Reading gtgt Se você estiver usando o Auto Layout, poderá fazer com que as células da visualização de tabela sejam dimensionadas automaticamente para caberem no conteúdo, adicionando dois métodos ao controlador de exibição de tabela: heightForRowAt e estimatedHeightForRowAt. Se ambos forem implementados e ambos retornarem UITableViewAutomaticDimension, suas células de exibição de tabela serão medidas usando o Layout automático e automaticamente caberão em seu conteúdo. Continue Reading gtgt Você pode ler a força de um usuário 3D Touch usando a propriedade force de um UITouch, que é melhor usado quando comparado com o touch. maximumPossibleForce. Por exemplo, você pode dividir um no outro para ver quanta força relativa é aplicada ou fazer uma comparação direta para verificar se o usuário está pressionando o máximo possível. Continue Reading gtgt Você pode forçar o texto de qualquer UITextView a ter preenchimento, ou seja, ser recuado de suas bordas, definindo sua propriedade textContainerInset como um valor de sua escolha. Por exemplo, para fornecer insets de 50 pontos de cada borda, use este código. Continue Reading gtgt A impressão no iOS costumava ser feita usando o UIPrintInteractionController e, enquanto isso ainda funciona, ele tem uma substituição muito melhor na forma de UIActivityViewController. Essa nova classe é responsável por tomar uma ampla variedade de ações, sendo a impressão apenas uma, mas os usuários também podem twittar, postar no Facebook, enviar por e-mail e qualquer outra ação que tenha sido registrada por outro aplicativo. Continue Reading gtgt Você pode colocar qualquer tipo de UIView atrás de uma exibição de tabela, e o iOS automaticamente redimensiona para caber na tabela. Então, adicionar uma imagem de fundo é apenas uma questão de usar um UIImageView como este. Continue Reading gtgt Assim que você começar a usar o UIPickerView pela primeira vez, perceberá que ele não possui uma maneira interna de ler o título de nenhum de seus itens. A razão para isso é óbvia em retrospecto, mas não se preocupe se você não entendeu no início: você deve ler o título diretamente da fonte de dados dos selecionadores. Continue Reading gtgt As imagens dos modelos são a forma de colorir qualquer tipo de imagem do iOS 7.0 quando está dentro de um UIImageView. Isso geralmente é usado para imitar o tingimento de imagens de botão (como visto nas barras de ferramentas e barras de guias), mas funciona em qualquer lugar em que você queira recolorir dinamicamente uma imagem. Continue lendo gtgt Se você estiver trabalhando inteiramente em código, poderá registrar uma subclasse UICollectionViewCell para usar com sua exibição de coleção, para que as novas células sejam retiradas da fila e reutilizadas automaticamente pelo sistema. Continue Reading gtgt A reutilização de células de exibição de tabela tem sido uma das otimizações de desempenho mais importantes no iOS desde o iOS 2.0, mas foi apenas com o iOS 6.0 que a API foi limpa um pouco com a adição do método register (). Continue Reading gtgt Se você criou uma view dinamicamente e quer que ela desapareça, ela é um one-liner no Swift graças ao método removeFromSuperview (). Quando você chama isso, a visualização é removida imediatamente e possivelmente também destruída, e só será mantida se você tiver uma referência a ela em outro lugar. Aqui está como isso é feito. Continue Reading gtgt É fácil excluir linhas de uma visualização de tabela, mas há uma captura: você precisa removê-la da fonte de dados primeiro. Se você não fizer isso, o iOS perceberá que há uma correspondência incorreta entre o que a fonte de dados acha que deveria estar mostrando e o que a exibição de tabela está realmente mostrando, e você terá uma falha. Continue Reading gtgt Você pode fazer com que qualquer subclasse de UIViewController responda ao dispositivo que está sendo agitado, sobrescrevendo o método motionBegan. Isso é usado para lidar com movimento (tremores), mas em teoria também ações de controle remoto, embora eu não posso dizer que eu já vi alguém escrever código para lidar com isso. Continue lendo gtgt Você pode executar o JavaScript personalizado em um UIWebView usando o método stringByEvaluatingJavaScript (de :). O método retorna uma string opcional, o que significa que, se o código retornar um valor, você o obterá de volta, caso contrário, você receberá de volta nulo. Continue Reading gtgt Toda subclasse UIView possui uma propriedade transform que permite manipular seu tamanho, posição e rotação usando algo chamado de transformação afim. Essa propriedade é animatable, o que significa que você pode fazer uma exibição suavemente dobrar de tamanho ou girar, apenas alterando um valor. Continue Reading gtgt No framework MessageUI está a classe MFMailComposeViewController, que lida com o envio de e-mails do seu aplicativo. Você pode definir os destinatários, o título da mensagem e o texto da mensagem, mas você não pode enviá-lo para o usuário tocar em si mesmo. Continue Reading gtgt Cada controlador de visualização tem uma propriedade navigationItem que dita como ele personaliza a barra de navegação, se ela for visualizada dentro de um controlador de navegação. É aqui que você adiciona itens de botão de barra à esquerda e à direita, por exemplo, mas também onde pode definir uma exibição de título: qualquer subclasse UIView usada no lugar do texto do título na barra de navegação. Continue lendo gtgt Você já deve saber que pode dar um título a uma barra de controladores de navegação definindo a propriedade de título de seus controladores de visualização ou view controllers navigationItem, mas você também sabe que pode fornecer texto de prompt também? sua barra de navegação para dobrar em altura e mostrar o título e o prompt. Continue Reading gtgt Se estiver criando seu controlador de barra de guias a partir do zero, ou se quiser apenas alterar a configuração de suas guias em tempo de execução, basta configurar a propriedade viewControllers do controlador da barra de guias. Isso espera receber uma matriz de view controllers na ordem que você deseja que eles sejam exibidos, e você já deve ter configurado cada view controller para ter seu próprio UITabBarItem com um título e um ícone. Continue Reading gtgt A propriedade tintColor de qualquer subclasse UIView permite alterar o efeito de coloração aplicado a ela. O efeito exato depende do controle que você está alterando: para barras de navegação e barras de guias, o texto e os ícones em seus botões, para texto, significa cursor de seleção e texto realçado, barras de progresso, cor de faixa e assim por diante. Continue Reading gtgt A classe UIActivityViewController é a maneira iOS de compartilhar quase tudo com praticamente qualquer lugar, mas e se você não quiser permitir que os usuários escolham Bem, o iOS também tem uma ferramenta para isso, e é chamado de estrutura Social. Comece importando isso agora. Continue Reading gtgt Antes de o iOS 6.0 ser lançado, havia várias bibliotecas de terceiros que tentavam simplificar o compartilhamento de conteúdo, mas mesmo com essas bibliotecas, ainda era muito difícil. Felizmente, a Apple adicionou o UIActivityViewController, uma classe que torna o compartilhamento de qualquer serviço tão simples quanto dizer que tipo de conteúdo você tem. Continue Reading gtgt Todos os controladores de navegação possuem uma barra de ferramentas integrada, mas não é mostrada por padrão. E mesmo se ele estivesse aparecendo, ele não tem nenhum item por padrão que você preencha. Continue Reading gtgt Se você criar alguma visualização em visualizações de código de texto, botões, rótulos, etc., precisa ter cuidado ao adicionar restrições de Layout Automático. para eles. A razão para isso é que o iOS cria restrições para você que correspondem ao novo tamanho e à posição das visualizações e, se você tentar adicionar suas próprias restrições, elas entrarão em conflito e seu aplicativo será interrompido. Continue Reading gtgt As exibições de tabela mostram separadores entre linhas vazias por padrão, o que parece bastante estranho quando você tem apenas um punhado de linhas visíveis. Felizmente, basta uma simples linha de código para forçar o iOS a não desenhar esses separadores, e é isso. Continuar lendo gtgt Usar uma visualização da Web para mostrar facilmente rich media é uma coisa comum, mas, por padrão, os usuários podem selecionar o texto e isso faz com que fique um pouco menos parecido com o código nativo. Para corrigir isso, adicione o seguinte CSS ao HTML carregado e os usuários não poderão selecionar nada novamente. Continue Reading gtgt A partir do iOS 7.0, todas as visualizações passam automaticamente por barras de navegação, barras de ferramentas e barras de guias para fornecer o que a Apple chama de contexto, tendo alguma idéia do que está embaixo da interface do usuário (embora desfocada com um efeito de vidro fosco) mais é apenas fora da tela. Continue Reading gtgt Se você estiver definindo títulos em uma barra de navegação, poderá personalizar a fonte, o tamanho e a cor desses títulos, ajustando o atributo titleTextAttributes para a sua barra de navegação. Continue Reading gtgt Tornar uma visualização de rolagem mais próxima quando você aperta é uma abordagem de várias etapas, e você precisa executar todas as etapas para que as coisas funcionem corretamente. Continue Reading gtgt É necessário apenas um método para permitir a exclusão de swipe nas visualizações de tabela: tableView (: commit: forRowAt :). Esse método é chamado quando um usuário tenta excluir uma das linhas da sua tabela usando furto para excluir, mas a sua presença é o que permite a exclusão do furto em primeiro lugar, o iOS literalmente verifica se o método existe e, se ele faz, permite furto para excluir. Continue Reading gtgt A partir do iOS 7.0, os usuários podem definir um tamanho de fonte preferencial em todo o sistema para todos os aplicativos, mas muitos programadores ignoram essa configuração para o aborrecimento dos usuários. Você não é um desses desenvolvedores, é claro que você não é como honrar as configurações de uma fonte de usuários usando o UIFont. Continue Reading gtgt A palavra-chave IBInspectable permite especificar que algumas partes de uma subclasse UIView personalizada devem ser configuráveis dentro do Interface Builder. Apenas alguns tipos de valores são suportados (booleanos, números, strings, pontos, retas, cores e imagens), mas isso deve ser suficiente para a maioria dos propósitos. Continue Reading gtgt A partir do iOS 7.0, todos os view controllers definem seu próprio estilo de barra de status por padrão, o que significa que eles podem ter texto preto ou branco dependendo do que parecer melhor para o seu view controller. Se você quiser ter texto claro na barra de status, adicione esse código ao seu controlador de visualização. Continuar lendo gtgt Se um usuário clica em um link da Web no seu aplicativo, você costumava ter duas opções antes do surgimento do iOS 9.0: saia do seu aplicativo e inicie a página no Safari ou exiba um novo controlador de visualização da Web que você projetou. com vários controles da interface do usuário. Sair do seu aplicativo raramente é o que os usuários querem, então, sem surpresa, muitos aplicativos acabaram criando experiências de mini-Safari para navegar em seu aplicativo. Continue Reading gtgt Size Classes é o método iOS de criar layouts adaptáveis que ficam ótimos em todos os tamanhos e orientações do iPhone e iPad. Por exemplo, você pode querer dizer que sua interface do usuário parece basicamente a mesma em retrato e paisagem, mas na paisagem algumas informações extras são visíveis. You could do this in code by checking for a change in the size of your view controller and trying to figure out what it means, but thats a huge waste of time particularly now that iPad has multiple different sizes thanks to multitasking in iOS 9. Continue Reading gtgt One of the most compelling reasons to upgrade to iOS 9.0 is the new UIStackView class it introduced, which offers a simplified way of doing layouts in iOS. To give you more control over how it arranges their subviews, stack views offer five different distribution types for you to try, and heres what they do. Continue Reading gtgt Apple frequently leaves debugging messages in iOS simulator builds, which is both good and bad: its good because sometimes the information is useful, but its bad because more often than not it just causes unnecessary worries. Continue Reading gtgt When Auto Layout has determined there isnt enough space to accommodate all your views at their natural size, it has to make a decision: one or more of those views needs to be squashed to make space for the others, but which one Thats where content compression resistance comes in: its a value from 1 to 1000 that determines how happy you are for the view to be squashed if needed. Continue Reading gtgt When you register for push notifications, one of two methods ought to be called: didRegisterForRemoteNotificationsWithDeviceToken is called when everything worked correctly, and didFailToRegisterForRemoteNotificationsWithError is called if something went wrong. Continue Reading gtgt About the Swift Knowledge Base This is part of the Swift Knowledge Base. a free, searchable collection of solutions for common iOS questions, all written for Swift 3. Need to know Objective-C fast I wrote a book dedicated to teaching Objective-C to developers who already know Swift its the fastest way to get up to speedUnleash Your Inner App Developer Part 26: Xcode 5 Auto Layout Wrapup By Kevin McNeish updated on 02/04/2014 Do you have an idea for an app but lack the programming knowledge to begin building it In this weekly blog series, I will take you, the non-programmer, step by step through the process of creating apps for the iPhone, iPod touch, and iPad. Join me each week on this adventure, and you will experience how much fun turning your ideas into reality can be This is Part 26 of the series. If you are just getting started, check out the beginning of the series here . In my previous post we went through the steps of converting the Write Review scene in iAppsReview to iOS 7 and Xcode 5. In this post were going to update a few more scenes and learn even more important information about Auto Layout, iOS 7s default edge-to-edge content, and how to specify a global tint for your app You can get the most recent version of the iAppsReview project at this link. I recommend that you follow along with the steps in this post for the best learning experience, but if you get stuck along the way, you can find the finished project at this link . iOS 7s Edge-to-Edge Content One of the biggest changes that affects the projects that you upgrade, is iOS 7s new edge-to-edge content layout. In iOS 7, Apple redesigned the entire look of the operating system with a view toward elevating the users content. You can see this in built-in apps such as Weather, Calendar, and Music ( Figure 1 ). Figure 1 - The updated iOS 7 built-in apps provide edge-to-edge content. As part of this approach to UI design, status bars, navigation bars, and toolbars are now translucent and because of this, view controllers now default to using a full screen layout. To see this in action, lets take a look at the Review scene in the iAppsReview project. In Xcode, open the iAppsReview project. If the storyboard isnt already selected, go to the Project Navigator and select the MainStoryboard file. Scroll to the Review scene as shown in Figure 2 . Figure 2 - The Review scene If you look closely, you can see that the labels at the top of the scene are hidden beneath the navigation bar. In iOS 6, these labels were positioned below the navigation bar, because the main view was positioned below it. In iOS 7, the view is positioned at the very top of the scene beneath the navigation bar, hiding the labels. How can we fix this In iOS 7, view controllers have a new edgesForExtendedLayout property that specifies which edges (top, bottom, left, and right) of a view should extend to the edge of the screen. The default setting is UIRectEdgeAll . which specifies that all edges of the view should extend to the edge of the screen. In both iOS 6 and iOS 7, most views typically extend to the left and right edge of the screen. In iOS 7, the top and bottom edges are the ones you normally want to change. You can write some code to set the view controllers edgesForExtendedLayout property in the viewDidLoad method of a view controller, but its best to set it in the Attributes Inspector. Lets do that now. Modifying the Review Scene To begin, lets fix the problem with the scenes content being hidden below the navigation bar. In the storyboard, click on the status bar at the top of the Review scene to select the scenes view controller. (A blue highlight appears around the scene when you have properly selected it). Go the Attributes Inspector (the third button from the right in the Inspectors toolbar) and in the View Controller section you can see the three attributes for Extend Edges shown in Figure 3 . Figure 3 - The Extend Edges attributes Uncheck the Under Top Bars and Under Bottom Bars options. When you do this, the main view in the Review scene is displayed below the navigation bar and the labels are now visible ( Figure 4 ). Figure 4 - The view positioned below the navigation bar Unchecking these options has the same effect as running the following line of code, which specifies that the left and right sides of the view should be extended to the edge of the screen (but the top and bottom should not): The Under Opaque Bars setting ( Figure 4 ) comes into play if you have changed your navigation bar or toolbars from translucent to opaque. By default, this setting is unchecked, because it usually doesnt make sense to extend a view under a top or bottom bar that is opaque Now that we have the view set up properly, lets fix the layout of the user interface controls. First, lets delete the existing constraints in the view controller. To do this, leave the view controller selected, and then go to the Auto Layout menu (toolbar) at the bottom-right corner of the Interface Builder pane and from the Resolve Auto Layout Issues button, select Clear All Constraints in Review View Controller ( Figure 5 ). Figure 5 - Clear all constraints from the view controller. This particular scene is intended to be read-only (the user can read a past review but not edit it). To disallow editing, select the star-rating control (the large white rectangle below the Entertainment label) and then go to the Attributes Inspector and uncheck the User Interaction Enabled check box ( Figure 6 ). Figure 6 - Uncheck User Interaction Enabled Next, select the UITextView control in the Review scene. Go to the Attributes Inspector and uncheck the Editable option ( Figure 7 ). Figure 7 - Uncheck the Editable option Now lets resize the star rating control, which became oversized when we moved the project to iOS 7. Select the star rating control in the design surface, go to the Size Inspector (the second button from the right in the Inspector toolbar) and change the Height to 60 ( Figure 8 ). Figure 8 - The Size Inspector Now lets make the Review screen reflect the layout of the Write Review screen. I wont provide detailed instructions for this since I already did in my previous post, but here are the main steps you need to perform. (As you move each control, make sure the blue dotted guide lines appear horizontally and vertically when you place the controls.): Move the star rating control below the Entertainment label. Move the image view to the right of the star rating control. Move the UITextView below the star rating and image view controls, and then increase its height by dragging its bottom edge until you see the horizontal guide line appear near the bottom of the scene. When youre finished, the scene should look like Figure 9 . Figure 9 - The rearranged controls Now lets allow Xcode to generate new constraints for the scene. To do this, click the status bar at the top of the Review scene to select the view controller. Next, go to the Auto Layout menu at the bottom-right corner of the Interface Builder pane, click the Resolve Auto Layout Issues button and then select Reset to Suggested Constraints in Review Controller from the popup menu ( Figure 10 ). Figure 10 - Reset constraints in the view controller The Review scenes layout is very similar to that of the Write Review scene. We need to take one more step so that the star rating control doesnt resize itself when the device orientation is changed to landscape. See if you can figure out how to do this. If you need a hint, you can look at my previous post to see how it was done (look in the section Tweaking the Constraints ). Now were ready to test the scene. In the Scheme control at the top-left of the Xcode window, make sure iPhone Retina (3.5-inch) is selected, and then click Xcodes Run button. When the app appears in the Simulator, select the Read Your Reviews option and then click on any of the reviews in the list. Your Review scene should look like Figure 11 . Figure 11 - The updated Review scene The all-new Scosche BoomBuoy (39.99) is the perfect pocket-sized wireless speaker that really packs a punch Count on rich, crystal-clear, omni-directional sound and up to 7 hours of play time with this IP67 rated, waterproof/dustproof speaker. Compact and incredibly rugged, BoomBuoy is designed for optimum performance in outdoor environments. Just clip it to your backpack or slip it into your pocket and head outdoors And it floats. Connect With Us On Join iPhone Lifes 950K Readers amp Fans
Comments
Post a Comment