我正在开发iOS 5应用程序。我想使用其默认视图以编程方式调整UIView的大小。这个视图被命名为cardView。
@interface ThreeCardsViewController : UIViewController
{
...
IBOutlet UIView* cardView;
...
}
@property (nonatomic, retain) IBOutlet UIView* cardView;
...
当我向viewDidAppear
内的方法发送消息时,我得到的cardView大小为0x0。
@implementation ThreeCardsViewController
...
@synthesize cardView;
...
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self setUpViews];
}
- (void) setUpViews
{
...
futureCardState.cardViewY =
[self computeDescriptionViewPosWith:futureCardState.cardViewSize];
...
[self showCard:pastCardState];
}
- (CGFloat) computeDescriptionViewPosWith:(CGSize)newDescriptionViewSize
{
CGFloat newY;
newY = cardView.frame.size.height - newDescriptionViewSize.height;
return newY;
}
所有视图或uilabels都有大小(0,0)。
我确信这些视图使用Interface Builder
与xib连接你知道我为什么得到(0,0)吗?我在哪里可以进行初始化?
答案 0 :(得分:1)
检查Xib中的IBOutlets,不要忘记所有属性的@synthesize。
答案 1 :(得分:0)
0x0不是一个大小,它是分配对象的内存地址。并在调用方法之前在ViewDidAppear中执行。
cardView = [[UIView alloc]init];
这将解决问题
答案 2 :(得分:0)
我找到了答案。
如果我使用self.cardView
,就行了!
- (CGFloat) computeDescriptionViewPosWith:(CGSize)newDescriptionViewSize
{
CGFloat newY;
newY = self.cardView.frame.size.height - newDescriptionViewSize.height;
return newY;
}