Как изменить размер uiscrollview и его содержимого при смене ориентации в iPhone? - PullRequest
1 голос
/ 23 августа 2011

Я работаю над проектом, в котором я добавил UIWebviews в UIscrollview, чтобы показать описание. Я сделал это, потому что хочу добавить эффект смахивания, чтобы перейти на новую страницу описания. Теперь я хочу изменить размер этого UIscrollview и его содержимого (т. Е. Uiwebview) при изменении ориентации (т. Е. Портретной ориентации или наоборот).

Пожалуйста, дайте мне любой пример кода или предложения для него.

Ответы [ 5 ]

1 голос
/ 07 июля 2012

Чтобы изменить размер просмотра, вы должны написать: -

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    webview.scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * someValue1, 
                                        scrollView.frame.size.height * someValue2);
}
0 голосов
/ 23 августа 2011

Вот ссылка на похожий вопрос и способ его решения: Масштабирование изображения по размеру экрана при повороте iPhone

Они использовали комбинацию AutoresizingMasks и ContentModes для ScrollView и, в их случае, для ImageView, хотя я полагаю, что то же решение будет работать для вашего WebView.

0 голосов
/ 23 августа 2011

Вы можете установить autoresizingMask scrollView и добавить этот код в ваш файл .m в соответствии с вашими требованиями.

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * someValue1, 
                                        scrollView.frame.size.height * someValue2);
}
0 голосов
/ 23 августа 2011

когда ориентация изменилась

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

{

// this delegate method will called if we set should auto orientation return yes;
when ever we changed orientation  so set frames.. 

}

например

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration

{
    appDelegate.interface=interfaceOrientation;


    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight)

{

//  SET FRAMES FOR LANDSCAPE HERE       


}

    if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationPortrait)

{ 
        //SET FRAMES FOR Portrait HERE              

}

}
0 голосов
/ 23 августа 2011

Вы можете поместить свой код в следующий блок кода:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if ([self isPadPortrait]) {
    // Your code for Portrait
    // set frame here  
} else if ([self isPadLandscape]) {
   // Your code for Landscape
   // set frame here 
}

, и следующий код позаботится об изменении ориентации:

- (BOOL)isPadPortrait
{

    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
            && (self.interfaceOrientation == UIInterfaceOrientationPortrait
                || self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown));
}

- (BOOL)isPadLandscape
{

    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
            && (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight
                || self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft));

}
...