0

iPadで簡単なアプリを作ろうとしています。今のところ、カスタム ビューで全画面画像のみを表示します。私の問題は、iPad が回転したときにビューが自動サイズ調整されないことです...回転は完璧に機能しますが、画像のサイズは同じままです。

写真を切り替えるときにこの効果が欲しかったので、私のアプリケーションはこれに基づいています。基本的に、影響を与えるビューは、FlipViewフォームGenericAnimationViewを継承するフォームを継承することUIViewです。1 つのアニメーション サイクルを表示するために必要なAnimationFrame継承元もあります。NSObject最後に、変換操作からのハンドル コールバックAnimationDelegateを継承するものがあります。NSObject

これが私のAnimationViewController

    #import "AnimationViewController.h"
    #import "FlipView.h"
    #import "AnimationDelegate.h"

    @implementation AnimationViewController

    @synthesize flipView2;
    @synthesize panRecognizer;
    @synthesize panRegion;
    @synthesize imageBluehound,imageDoggie,imagePointy,imagePurpGuy,imageRedDog,imageWoof;

    - (id)init
    {
        self = [super init];
        if (self) {
            // Custom initialization
            step = 0;
        }
        return self;
    }

    - (void)didReceiveMemoryWarning
    {
        // Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];

        // Release any cached data, images, etc that aren't in use.
    }

    #pragma mark - View lifecycle

    /*
    // Implement loadView to create a view hierarchy programmatically, without using a nib.
    - (void)loadView
    {
    }
    */

    - (void)dealloc
    {
        [flipView2 release];
        [panRecognizer release];
        [panRegion release];

        [super dealloc];
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];

        self.view.backgroundColor = [UIColor whiteColor];

        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onBackButtonPressed:)];

        // memorisation des imagesx
        imageBluehound = [UIImage imageNamed:@"Bluehound.gif"];
        imageDoggie = [UIImage imageNamed:@"Doggie.gif"];
        imagePointy = [UIImage imageNamed:@"Pointy.gif"];
        imagePurpGuy = [UIImage imageNamed:@"PurpGuy.gif"];
        imageRedDog = [UIImage imageNamed:@"RedDog.gif"];
        imageWoof = [UIImage imageNamed:@"Woof.gif"];


        animationDelegate2 = [[AnimationDelegate alloc] initWithSequenceType:kSequenceControlled
                                                               directionType:kDirectionForward];
        animationDelegate2.controller = self;
        animationDelegate2.perspectiveDepth = 1000;

        self.flipView2 = [[FlipView alloc] initWithAnimationType:kAnimationFlipHorizontal
                                                           frame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
        animationDelegate2.transformView = flipView2;

        [self.view addSubview:flipView2];


        [flipView2 printText:@"" usingImage:imageBluehound backgroundColor:[UIColor greenColor] textColor:nil];
        [flipView2 printText:@"" usingImage:imageDoggie backgroundColor:[UIColor greenColor] textColor:nil];
        [flipView2 printText:@"" usingImage:imagePointy backgroundColor:[UIColor greenColor] textColor:nil];
        [flipView2 printText:@"" usingImage:imagePurpGuy backgroundColor:[UIColor greenColor] textColor:nil];
        [flipView2 printText:@"" usingImage:imageRedDog backgroundColor:[UIColor greenColor] textColor:nil];
        [flipView2 printText:@"" usingImage:imageWoof backgroundColor:[UIColor greenColor] textColor:nil];


        self.panRegion = [[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
        [self.view addSubview:panRegion];

        self.panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panned:)];
        panRecognizer.delegate = self;
        panRecognizer.maximumNumberOfTouches = 1;
        panRecognizer.minimumNumberOfTouches = 1;
        [self.view addGestureRecognizer:panRecognizer];

    }

    - (void)onBackButtonPressed:(UIBarButtonItem *)sender
    {
        [self dismissModalViewControllerAnimated:YES];
    }

    - (void)panned:(UIPanGestureRecognizer *)recognizer
    {
        switch (recognizer.state) {
            case UIGestureRecognizerStatePossible:
                break;
    //        case UIGestureRecognizerStateRecognized: // for discrete recognizers
    //            break;
            case UIGestureRecognizerStateFailed: // cannot recognize for multi touch sequence
                break;
            case UIGestureRecognizerStateBegan: {
                // allow controlled flip only when touch begins within the pan region
                if (CGRectContainsPoint(panRegion.frame, [recognizer locationInView:self.view])) {
                    if (animationDelegate2.animationState == 0) {
                        [NSObject cancelPreviousPerformRequestsWithTarget:self];
                        animationDelegate2.sequenceType = kSequenceControlled;
                        animationDelegate2.animationLock = YES;
                    }
                }
            }
                break;
            case UIGestureRecognizerStateChanged: {
                if (animationDelegate2.animationLock) {
                    switch (flipView2.animationType) {
                        case kAnimationFlipVertical: {
                            float value = [recognizer translationInView:self.view].y;
                            [animationDelegate2 setTransformValue:value delegating:NO];
                        }
                            break;
                        case kAnimationFlipHorizontal: {
                            float value = [recognizer translationInView:self.view].x;
                            [animationDelegate2 setTransformValue:value delegating:NO];
                        }
                            break;
                        default:break;
                    }
                }
            }
                break;
            case UIGestureRecognizerStateCancelled: // cancellation touch
                break;
            case UIGestureRecognizerStateEnded: {
                if (animationDelegate2.animationLock) {
                    // provide inertia to panning gesture
                    float value = sqrtf(fabsf([recognizer velocityInView:self.view].x))/10.0f;
                    [animationDelegate2 endStateWithSpeed:value];
                }
            }
                break;
            default:
                break;
        }
    }

    // use this to trigger events after specific interactions
    - (void)animationDidFinish:(int)direction 
    {
        switch (step) {
            case 0:
                break;
            case 1:
                break;
            default:break;
        }
    }

    - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
    {
        if (UIInterfaceOrientationIsLandscape(orientation))
        {
            if (orientation == UIInterfaceOrientationLandscapeLeft)
            {
                NSLog(@"landscape left");
                self.flipView2.transform = CGAffineTransformMakeRotation(0);
            }
            else
            {
                NSLog(@"landscape right");
                self.flipView2.transform = CGAffineTransformMakeRotation(0);
            }
        }
    }


    - (void)viewDidUnload
    {
        [super viewDidUnload];
        // Release any retained subviews of the main view.
        // e.g. self.myOutlet = nil;
    }

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        // Return YES for supported orientations
        return YES;
    }

@end

そしてここで.h

#import <UIKit/UIKit.h>

@class FlipView;
@class AnimationDelegate;

@interface AnimationViewController : UIViewController <UIGestureRecognizerDelegate> {

    // use this to choreograph a sequence of animations that you want the user to step through
    int step;

    //the controller needs a reference to the delegate for control of the animation sequence
    AnimationDelegate *animationDelegate2;

    BOOL runWhenRestart;

}

//@property (nonatomic, retain) UIButton *boutonMenuGlissant;

@property (nonatomic, retain) UIImage *imageBluehound;
@property (nonatomic, retain) UIImage *imageDoggie;
@property (nonatomic, retain) UIImage *imagePointy;
@property (nonatomic, retain) UIImage *imagePurpGuy;
@property (nonatomic, retain) UIImage *imageRedDog;
@property (nonatomic, retain) UIImage *imageWoof;

@property (nonatomic, retain) FlipView *flipView2;
@property (nonatomic, retain) UIView *panRegion;
@property (nonatomic, retain) UIPanGestureRecognizer *panRecognizer;

- (void)onBackButtonPressed:(UIBarButtonItem *)sender;
- (void)panned:(UIPanGestureRecognizer *)recognizer;
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration;

// animation delegate will notify the controller when the animation frame has reached a position of rest
- (void)animationDidFinish:(int)direction;

@end

他の投稿で autoSized マスクについて話しているのを見ましたが、できませんでした...

アイデアや提案はありますか?ありがとう!

4

1 に答える 1

1

ビュー/画像のストラットと文字列を変更してみてください。画像をクリックした後、ユーティリティ インスペクターのサイズ タブに移動します。「自動サイズ調整」の横の例は、フレームが変化したときにビューがどのように見えるかを示しています。赤いコネクタと矢印のオン/オフを切り替えて、向きが変わったときにイメージを思い通りに見せます。

于 2012-07-16T21:36:19.137 に答える