Fla*_*ppy 0 iphone position class objective-c uilabel
我尝试更改读取并从UILabel更改位置.这个UILabel是在Interface Builder中创建的,现在我想在MainVieController类中调用一个方法时读取并更改另一个类中的位置.
但我怎么能这样做,我已经阅读了几个论坛,但我不能让它工作.这里还有一些示例代码.我希望有人可以帮助我.
MainViewController.h
#import <UIKit/UIKit.h>
@class NewClass;
@interface MainViewController : UIViewController {
UILabel *daLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *daLabel;
@end
Run Code Online (Sandbox Code Playgroud)
MainViewController.m
#import "MainViewController.h"
#import "NewClass.h"
@implementation MainViewController
@synthesize daLabel;
- (void)viewDidLoad {
[super viewDidLoad];
NewClass *anotherClass = [[NewClass alloc] init];
[anotherClass test];
}
@end
Run Code Online (Sandbox Code Playgroud)
NewClass.h
#import <Foundation/Foundation.h>
@class MainViewController;
@interface NewClass : NSObject {
}
@end
Run Code Online (Sandbox Code Playgroud)
NewClass.m
#import "NewClass.h"
#import "MainViewController.h"
@implementation NewClass
- (void)test {
MainViewController *MainController = [[MainViewController alloc] init];
CGRect labelPosition = MainController.daLabel.frame;
NSLog(@"POSITION: %f", labelPosition.origin.x); // Returns 0.000000
}
@end
Run Code Online (Sandbox Code Playgroud)
我不确定你为什么要在NewClass中创建另一个视图控制器实例,它由视图控制器加载.也许只是在调用测试方法时传递"self"?但是,如果要更改UILabel的位置,只需更改labelPosition,然后将daLabel.frame设置为已修改的labelPosition.例如:
- (void)viewDidLoad {
[super viewDidLoad];
NewClass *anotherClass = [[NewClass alloc] init];
[anotherClass test:self];
}
- (void)test:(MainViewController *)mvc {
CGRect labelPosition = mvc.daLabel.frame;
NSLog(@"POSITION: %f", labelPosition.origin.x); // Returns 0.000000
labelPosition.origin.x = 50;
mvc.daLabel.frame = labelPosition; // Now moved to 50.000000
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6771 次 |
| 最近记录: |