我是IOS编程的新手,因此在下面的问题上有点挣扎。我将尽力描述问题,非常感谢任何帮助。
我创建了以下内容:
TestView.h如下:
@interface TestView : UIView {
IBOutlet UIView *mainView;
IBOutlet UIView *infoView;
UILabel *lbltitle;
UIImageView *imgIcon;
IBOutlet UITextView *txtInfo1;
IBOutlet UITextView *txtInfo2;
IBOutlet UITextView *txtInfo3;
}
@property (nonatomic, retain) IBOutlet UILabel *lbltitle;
@property (nonatomic, retain) IBOutlet UIImageView *imgIcon;
TestView.m如下:
#import "TestView.h"
#import <QuartzCore/QuartzCore.h>
@implementation TestView
@synthesize lbltitle, imgIcon;
-(void)awakeFromNib
{
[self addSubview:mainView];
}
在纵向模式下,视图效果很好但是在横向模式下,视图都有点搞砸了。我试图使用XIB,但我想你只能这么做,所以我决定以编程方式进行。
在AboutViewController.m中,我试图覆盖willAnimateRotationToInterfaceOrientation方法并根据方向放置对象。当我放置断点时,我可以看到代码被调用,除了它没有转换到UI,即UI没有变化。我究竟做错了什么 ?我应该以不同的方式接近这个。非常感谢任何建议或指导。
- (void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
TestView *t = [[TestView alloc]init];
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
[t.imgIcon setFrame:CGRectMake(10,74,165,190)];
[t.lbltitle setFrame:CGRectMake(20, 10, 387, 21)];
}
else
{
[t.imgIcon setFrame:CGRectMake(10,74,165,190)];
[t.lbltitle setFrame:CGRectMake(189, 10, 387, 21)];
}
}
答案 0 :(得分:0)
特别的问题是您使用
操作刚刚创建的视图TestView *t = [[TestView alloc]init];
您不会在任何地方显示视图,因此它位于内存中。您可以应用所需的所有更改,但是为了能够看到它们,您必须首先显示视图:
找到合适的父母并执行:
[parentview addSubview:t];
更一般地说,您不应该在轮换处理代码中创建新视图。