Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
sanchessd

Interface Orientation iPad

Posts Recomendados

Estou fazendo meu app versao para iPad, na versao pro iPhone o app trabalha somente na visao "Portrait" mas na versao para iPad ele será na visao LandsCape, vejam o que fiz até agora:


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
else{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);

}
}
[/CODE]

ele detecta se é iPad e caso for, ficará em Landscape em qualquer posiçao que o iPad estiver, pro iPhone faz o contrario.

não tive sucesso, nao funcionou.

alguém ja fez algo parecido ? Basicamente o que quero é simples, iPhone == Portrait, iPad == LandsCape;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso estar errado mas acho que dentro do return é apenas um "=" ao inves de "=="

Pois é atribuição e não condição.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

// Return YES for supported orientations

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

return (interfaceOrientation = UIInterfaceOrientationLandscapeLeft);

}

else{

return (interfaceOrientation = UIInterfaceOrientationLandscapeLeft);

}

}

Caso tenha falado besteira desculpe, ainda não programo em Objective C

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa, obrigado pela dica, e voce tem razao, quando estava com esse codigo estava recebedo um erro no debug, pois nao retornava nenhum valor TRUE e nao funcionava nada, porem para corrigir este problema tentei implementar outro codigo:


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown) &&
(interfaceOrientation != UIInterfaceOrientationPortrait);
} else {
return (interfaceOrientation != UIInterfaceOrientationLandscapeLeft) &&
(interfaceOrientation != UIInterfaceOrientationLandscapeRight);
}
[/CODE]

só que o resultado é muito estranho, quando rodo o app no iPad, a tela carrega em modo UIInterfaceOrientationLandscapeLeft, mas somente enquanto está na tela de splash, depois volta ao normal, e mesmo que eu gire o iPad nao acontece a rotaçao da tela,

criei um projeto novo só para testes e funciona perfeitamente este codigo, porém se eu adcionar um MainWindow ferra tudo, o app nao faz mais a rotaçao.

o formato da tela carrega no modo certo, "Landscape", mas minha taBar fica na visão "Portrait" e nada gira.

:/

Editado por sanchessd

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha só, fiz mais um projeto de teste e vou postar aqui pra quem quiser olhar, usei o mesmo codigo do projeto anterior só inclui uma TabBar:

http://www.mediafire.com/?d64aphz8q6sf2lw

é a primeira vez que estou usando InterfaceOrientation em um app, deve estar faltando algo.

o objetivo é: caso for iPhone visao Portrait ou caso for iPad visao Landscape

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo meu app versao para iPad, na versao pro iPhone o app trabalha somente na visao "Portrait" mas na versao para iPad ele será na visao LandsCape, vejam o que fiz até agora:


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
else{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);

}
}
[/CODE]

ele detecta se é iPad e caso for, ficará em Landscape em qualquer posiçao que o iPad estiver, pro iPhone faz o contrario.

não tive sucesso, nao funcionou.

alguém ja fez algo parecido ? Basicamente o que quero é simples, iPhone == Portrait, iPad == LandsCape;

O seu único problema nesse trecho do código é que você está retornando o mesmo valor se for um iPad ou iPhone. Troque dentro do else o UIInterfaceOrientationLandscapeLeft por UIInterfaceOrientationPortrait ou UIInterfaceOrientationPortraitUpsideDown. Caso queira dar suporte aos dois essa macro resolve o seu problema: UIInterfaceOrientationIsPortrait(interfaceOrientation).

Abaixo segue um trecho de código como exemplo:

[CODE]
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
} else {
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
}
[/CODE]

Posso estar errado mas acho que dentro do return é apenas um "=" ao inves de "=="

Pois é atribuição e não condição.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

// Return YES for supported orientations

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

return (interfaceOrientation = UIInterfaceOrientationLandscapeLeft);

}

else{

return (interfaceOrientation = UIInterfaceOrientationLandscapeLeft);

}

}

Caso tenha falado besteira desculpe, ainda não programo em Objective C

Nesse caso é uma condição mesmo e não uma atribuição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz umas alterações no seu projeto, verifica se é assim que você quer: http://www.mediafire.com/?f1365stb184iio3

As alterações que eu fiz foi selecionar quais as orientações suportadas para cada tipo de dispositivo (iPhone: Portrait e Upside Down / iPad: Landscape left e Landscape right). Alterei o NIB também, adicionei uma UITabBar e setei o autosizing dela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois de uma semana estou respondendo, demorei pois estava viajando...

bem, é exatamente isso que preciso no meu app, porém recebo o mesmo problema do inicio, tenho um MainWindow.xib no meu projeto, se adcionar um MainWindow no projeto que me mandou verá que ele nao vai mais responder a rotação.

fiz uns testes coloquei


return YES;
[/CODE]

que no caso responderia a todas Orientações mas ele nao da sinal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois de muitos testes aqui aconsegui resolver o problema.

no meu appDelegate.h

coloquei:


@interface UITabBarController (MyApp)
@end
[/CODE]

e no meu appDelegate.m

[CODE]
@implementation UITabBarController (MyApp)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
} else {
return UIInterfaceOrientationIsPortrait(toInterfaceOrientation);
}
}
@end
[/CODE]

minha tabBar roda certinho agora

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder este tópico…

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Limpar editor

×   You cannot paste images directly. Upload or insert images from URL.

Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.



  • Estatísticas do Fórum

    • Total de Tópicos
      47.900
    • Total de Posts
      410.868
×
×
  • Criar Novo...