gpt4 book ai didi

objective-c - 如何在 Xcode 中访问或操作一个类的变量

转载 作者:行者123 更新时间:2023-11-28 17:37:45 27 4
gpt4 key购买 nike

我是 IOS 编程的新手,因此遇到了以下问题。我会尽力描述问题,非常感谢任何帮助。

我创建了以下内容:

  • AboutViewController(.h、.m 和 .xib),它有两个名为 mainView、infoView 的 subview 。 mainView 和 infoView 接口(interface)在 XIB 文件中创建。
  • TestView(View 处理启动,在 mainView 和 infoView 之间切换)

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];
}

在纵向模式下, View 效果很好,但在横向模式下, View 就有点乱了。我尝试使用 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)];

}
}

最佳答案

具体的问题是你操纵了一个你刚刚创建的 View

TestView *t = [[TestView alloc]init];

您不会在任何地方显示 View ,因此它位于内存中。您可以应用您想要的所有更改,但要能够看到它们,您必须首先显示 View :

找到合适的 parent 并做:

[parentview addSubview:t];

更一般地说,您不应该在旋转处理代码中创建新 View 。

关于objective-c - 如何在 Xcode 中访问或操作一个类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303990/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com