如何将EAGLView UIButton框架传递给viewcontroller

时间:2014-06-09 08:40:53

标签: ios uiview uiviewcontroller uibutton eaglview

我有EAGLView和它的UIButton。在ViewController中,我需要在横向模式下显示相同的按钮,点击事件在EAGLView中显示。我试着设置[eaglView.save setFrame:CGRectMake(360,10,40,40)];但尺寸在景观中没有变化,仍然显示纵向模式框架。

EAGLView.h:

@interface BooksEAGLView : UIView{

  UIButton *save;

 }
 @property(nonatomic, retain) UIButton *save;

EAGLView.mm:

 save=[UIButton buttonWithType:UIButtonTypeCustom];
 [save setImage:[UIImage imageNamed:@"share_1.png"] forState:UIControlStateNormal];
 [save setFrame:CGRectMake(240, 10, 40, 40)];
 [save addTarget:self action:@selector(save:) forControlEvents:UIControlEventTouchUpInside];
 [self addSubview:save];

Viewcontroller.mm:

 eaglView = [[BooksEAGLView alloc] initWithFrame:viewFrame delegate:self appSession:vapp];

 [self setView:eaglView];

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


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


 [eaglView.save setFrame:CGRectMake(360, 10, 40, 40)];



}else {

}

}

}

4 个答案:

答案 0 :(得分:0)

将以下代码放在您调用BooksEAGLView的viewcontroller中

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


    if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight){
        [eaglView.save setFrame:CGRectMake(360, 10, 40, 40)];

    }else {
         [eaglView.save setFrame:CGRectMake(240, 10, 50, 50)];
    }


}

答案 1 :(得分:0)

请参阅此代码

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    eaglView = [[BooksEAGLView alloc] initWithFrame:CGRectMake(100, 100, 150, 200)];

    [self setView:eaglView];

}

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


    if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight){
        [eaglView.save setFrame:CGRectMake(360, 10, 40, 40)];

    }else {
         [eaglView.save setFrame:CGRectMake(240, 10, 50, 50)];
    }


}

答案 2 :(得分:0)

<强> BooksEAGLEView.h

#import <UIKit/UIKit.h>

@interface BooksEAGLView : UIView{

    UIButton *save;

}
@property(nonatomic, retain) UIButton *save;

@end

答案 3 :(得分:0)

BooksEAGLEView.m

#import "BooksEAGLView.h"

@implementation BooksEAGLView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

        save=[UIButton buttonWithType:UIButtonTypeCustom];
        [save setFrame:CGRectMake(240, 10, 50, 50)];
        [save setBackgroundColor:[UIColor redColor]];
        [save setTitle:@"Save" forState:UIControlStateNormal];
        [save addTarget:self action:@selector(save:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:save];
    }
    return self;
}
-(void)save:(id)sender
{
    NSLog(@"clicked...");
}