0

UITextViewストーリーボードで作成された x、y 位置と幅を読み取るにはどうすればよいですか?

実行時に、UITextBox のすぐ下に他のオブジェクトをプログラムで作成する必要がありますか? また、実行時に作成されるすべてのオブジェクトは、ストーリーボードの位置に基づいている必要がありますUITextView

これに対する答えは見つかりませんでした。そして、私が試したコード (以下) は 0,0 を返します

.h... で

@interface ataglance_central_controller : UIViewController
{
    IBOutlet UITextView *transmitter_box;
}

.m で ...................

enter code here
#import "ataglance_central_controller.h"
#import <CoreBluetooth/CoreBluetooth.h> 
#import <QuartzCore/QuartzCore.h>


#import "TransferService.h"

@interface ataglance_central_controller () <CBCentralManagerDelegate, CBPeripheralDelegate>
{
UITextView* battery_status_textview;
}

@property (strong, nonatomic) IBOutlet UITextView   *textview;
@property (strong, nonatomic) CBCentralManager      *centralManager;
@property (strong, nonatomic) CBPeripheral          *discoveredPeripheral;
@property (strong, nonatomic) NSMutableData         *data;

@end



@implementation ataglance_central_controller

-(void)viewDidLoad
{
        NSLog(@"    ataglance_central_controller.m viewDidLoad.     ");
   [super viewDidLoad];


NSLog(@" x <<<<<<<<<<<<<<<<<<< b  %f",  transmitter_box.frame.origin.x );
NSLog(@" y <<<<<<<<<<<<<<<<<<< b  %f", transmitter_box.frame.origin.y );

}


-(void)viewDidLayoutSubviews
{

NSLog(@" x viewDidLayoutSubviews  %f", transmitter_box.frame.origin.x );

NSLog(@" y viewDidLayoutSubviews  %f", transmitter_box.frame.origin.y );


}

ログ

2013-05-21 12:12:10.708 DW x2[447:c07]  ataglance_central_controller.m viewDidLoad.     
2013-05-21 12:12:10.709 DW x2[447:c07]  x <<<<<<<<<<<<<<<<<<< b  0.000000
2013-05-21 12:12:10.709 DW x2[447:c07]  y <<<<<<<<<<<<<<<<<<< b  0.000000
2013-05-21 12:12:10.712 DW x2[447:c07] Battery status is unknown.
2013-05-21 12:12:10.743 DW x2[447:c07]  x viewDidLayoutSubviews  270.000000
2013-05-21 12:12:10.744 DW x2[447:c07]  y viewDidLayoutSubviews  12.000000
4

3 に答える 3

0

レイヤーはあなたの中にUITextViewあり、その所有者を埋めます。

あなたが探しているのはframe、あなたのコントロールのtransmitter_box.frame.origin.xtransmitter_box.frame.origin.yです。

于 2013-05-20T17:44:00.447 に答える
0

私はあなたの答えを持っていません。幸いなことに、あなたはすでにそれを見つけています。ただし、Objective-C の命名規則から逸脱しているようです。

@interface ataglance_central_controller

もっと似ているはずです

@interface MYAtAGlanceCentralController

クラス名は大文字で始める必要があります (そして何かを前に付けます)

于 2013-05-24T07:00:30.653 に答える
0

viewDidLayoutSubviewsの代わりにフレームの詳細を記録してみてくださいviewDidLoad。ストーリーボードが AutoLayout サブビューを使用するように設定されている場合、思ったよりも遅く配置されます...

もちろん、これは他のサブビューを viewDidLoad に追加し、フレームを直接設定するのではなく、自動レイアウト制約を使用して UITextView に相対的に配置することを止めるものではありません。

于 2013-05-20T19:08:40.603 に答える