首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIInterfaceOrientation仍在肖像中

UIInterfaceOrientation仍在肖像中
EN

Stack Overflow用户
提问于 2013-03-01 17:11:33
回答 3查看 311关注 0票数 0

我有一个标题/品牌形象,这改变了iPad和iPhone,但不会改变图片时,从肖像到景观,这是真正重要的是,它做到了。

我有一个HeaderView类,由tableViewControllers这样调用:

代码语言:javascript
复制
self.tableView.tableHeaderView = [[HeaderView alloc] initWithText:@""];

它包含一个UIImageView:

代码语言:javascript
复制
@interface HeaderView : UIImageView{

}
- (id)initWithText:(NSString*)text;
- (void)setText:(NSString*)text;


@end

对于M文件,我们发现哪里没有得到我想要的结果:

代码语言:javascript
复制
#import "HeaderView.h"

#define IDIOM    UI_USER_INTERFACE_IDIOM()
#define IPAD     UIUserInterfaceIdiomPad
@interface HeaderView()
{
    UILabel*label;
}
@end

@implementation HeaderView 

- (id)initWithText:(NSString*)text
{
    UIImage* img = [UIImage imageNamed:@"WashU.png"];
    UIImage* iPhonePortrait = [UIImage imageNamed:@"WashU2.png"];
    UIImage* image = [[UIImage alloc] init];


    UIInterfaceOrientation interfaceOrientation = [UIApplication     sharedApplication].statusBarOrientation;

        //different header image for different devices...
    if(IDIOM==IPAD){
        image = img;
    }
    else{
        if(UIInterfaceOrientationIsPortrait(interfaceOrientation)){
        image = iPhonePortrait;
        }
        else if(UIInterfaceOrientationIsLandscape(interfaceOrientation))
        {
            iPhonePortrait = nil;
            image = img;
        } 
    }    
    [headerImageView setImage:image];
    if (self = [super initWithImage:image]){

    }

    return self;
}

我还添加了以下方法:

代码语言:javascript
复制
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation         {
    return YES;
}

-(BOOL)shouldAutorotate {
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

我肯定这是个经典的问题,但我有点困惑。同时,如果我移除

代码语言:javascript
复制
[headerImageView setImage:image]; 

,以及

代码语言:javascript
复制
[self addSubview:headerImageView];

,图像仍然会显示,这意味着

代码语言:javascript
复制
if (self = [super initWithImage:image])

正在做所有的显示工作。

EN

回答 3

Stack Overflow用户

发布于 2013-03-01 17:21:18

didRotateFromInterfaceOrientation在旋转后发送到视图控制器,您可以实现这一点来更改图像。

代码语言:javascript
复制
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
      ...change your image here
}
票数 0
EN

Stack Overflow用户

发布于 2013-03-01 17:44:19

实际上,您并没有将图像分配给imageView。添加:

代码语言:javascript
复制
headerImageView.image = image;

在“图像”之后的某个地方已经设置好了(基于iPad vs iPhone和肖像与景观)。

票数 0
EN

Stack Overflow用户

发布于 2013-03-01 17:55:23

作为您的代码,您不需要分配(UIImage*)图像属性,因为您将分配(UIImage*)img或(UIImage*)iPhonePortrait。并应将图像分配给headerImageView.image。

代码语言:javascript
复制
[headerImageView setImage:image];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15163149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档