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

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

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
      50.343
    • Total de Posts
      425.582
×
×
  • Criar Novo...