0

UIView以下のようなクラスをサブクラス化して、カスタム クラスを作成したいと思います。
私の目標

ああ、テキストには、ボディ ビューの高さは 80 ピクセル、50 ピクセルにする必要があると書かれています。
しかし、私はそれを正しく理解できないようです。クラスヘッダーを次のように準備しました:

#import <UIKit/UIKit.h>

@interface MessageView : UIView

@property (strong, nonatomic)UIImage *backgroundImage;
@property (strong, nonatomic)UITextView *messageView;
@property (strong, nonatomic)UILabel *titleLabel;

- (id)initWithBackgroundImage:(NSString*)background;

- (void)setTitle:(NSString*)titleMessage;
- (void)setBody:(NSString*)bodyMessage;

@end

initWithBackgroundImageここで、背景画像ファイル名を渡す場所を呼び出して、これらのビューを作成します。この例は、これらのイメージの 1 つを示しています。テキストが空になることを除いて、initが例のようにボディを作成するように、initメソッドを実装するにはどうすればよいですか?

init メソッドの私の無駄な試みはこれでした:

- (id)initWithBackgroundImage:(NSString*)background
{
    self = [super init];//[super initWithFrame:CGRectMake(0, 0, 270, 100)];
    if (self)
    {
        backgroundImage = [[UIImage imageNamed:background] retain];
        messageView = [[UITextView alloc] initWithFrame:CGRectMake(10, 40, 250, 50)];
        titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 250, 20)];
    }
    return self;
}

しかし、何も起こりませんでした。完了したら、setter メソッドを使用してテキストを設定します。を介して最終ビューの位置を設定したいと思いsetCenter(x, y)ます。クラスの幅と高さを「固定」したい。

ありがとう!

4

1 に答える 1

0

編集:

   - (id)initWithBackgroundImage:(NSString*)background
    {
        self = [super init];//[super initWithFrame:CGRectMake(0, 0, 270, 100)];
        if (self)
        {
            UIImageView *bg  = [[UIImageView alloc] initWithImage:[UIImage imageNamed:background]];      
            messageView = [[UITextView alloc] initWithFrame:CGRectMake(10, 40, 250, 50)];
            titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 250, 20)];
            [self addSubview:bg];
            [bg release];
            [self addSubview:messageView];
            [messageView release];
            [self addSubview:titleLabel];
            [titleLabel release];
        }
        return self;
}
于 2012-11-12T10:52:57.500 に答える