我有一个标题/品牌形象,在iPad和iPhone之间发生变化,但在从纵向更改为横向时不会改变图片,这非常重要它确实如此。
我有这个HeaderView类,由tableViewControllers调用,如下所示:
self.tableView.tableHeaderView = [[HeaderView alloc] initWithText:@""];
包含UIImageView:
@interface HeaderView : UIImageView{
}
- (id)initWithText:(NSString*)text;
- (void)setText:(NSString*)text;
@end
对于M文件,我们找到了我没有得到我想要的结果的地方:
#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;
}
我也添加了这些方法:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
-(BOOL)shouldAutorotate {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
我确信这是一个经典的问题,但我有点难过。另外,如果我删除
[headerImageView setImage:image];
和
[self addSubview:headerImageView];
,图像仍显示,表示
if (self = [super initWithImage:image])
正在进行所有的显示工作。
答案 0 :(得分:0)
didRotateFromInterfaceOrientation在旋转后发送到您的视图控制器,您可以实现它来更改您的图像。
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
...change your image here
}
答案 1 :(得分:0)
您实际上并未将图像分配给imageView。添加:
headerImageView.image = image;
在'image'设置之后的某个地方(基于iPad vs iPhone和Portrait vs Landscape)。
答案 2 :(得分:0)
作为您的代码,您不需要分配(UIImage *)图像属性,因为您将分配(UIImage *)img或(UIImage *)iPhonePortrait。并且应该将图像分配给headerImageView.image。
[headerImageView setImage:image];