0

- (void)setNeedsDisplayメソッドを呼び出さない について再びお手数をおかけして申し訳ありません- (void)drawRect:...しかし、私はこの問題に多くの時間を費やしています

私は Objective-C の初心者で、簡単なシュートアップをしようとしています。(私は働く必要があることを知っています)

しかし今、私はビューで写真を上げたいだけです。たとえば、画像はビューの (0,0) に表示され、NSButton を押すたびにこの画像を (10 ピクセル) 上げたいと思います。

問題は、画像が動かないことです ;(これを確認できる人もいますか? コードは次のとおりです。

#import <Cocoa/Cocoa.h>


@interface maVue : NSView {

    NSImageView * monMonstre;
    int nombre;
}
@property (readwrite) int nombre;

- (IBAction)boutonClic:(id)sender;

@end








#import "maVue.h"


@implementation maVue


- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
        nombre = 2;
        monMonstre = [[NSImageView alloc]init];
    }
    return self;
}


- (void)drawRect:(NSRect)dirtyRect 
{
    // Drawing code here.
    [monMonstre setFrame:CGRectMake(0,[self nombre],100,100)];
    [monMonstre setImage:[NSImage imageNamed:@"monstre.jpg"]];
    [self addSubview:monMonstre];
}


- (IBAction)boutonClic:(id)sender
{
    [self setNombre:[self nombre]+10];
    [self setNeedsDisplay:YES];

}


- (void)setNombre:(int)nouveauNombre
{
    nombre=nouveauNombre;
}

- (int)nombre
{
    return nombre;
}
@end
4

1 に答える 1

0

あなたは必要ありません - (void)setNeedsDisplay

NSViewプロパティの標準を使用してくださいframe

コードを次のように書き直す必要があります。

#import <Cocoa/Cocoa.h>

@interface maVue : NSView
{
  NSImageView * monMonstre;
  int nombre;
}
@property (readwrite) int nombre;

- (IBAction)boutonClic:(id)sender;

@end


#import "maVue.h"

@implementation maVue

- (void)initWithFrame:(CGRect)frame
{
  if(self = [super initWithFrame:frame])
  {
    nombre = 2;
    monMonstre = [[NSImageView alloc] init];
    [monMonstre setImage:[NSImage imageNamed:@"monstre.jpg"]];
    NSSize mSize = [monMonstre image].size;
    NSRect monstreFrame;
    monstreFrame = NSMakeRect(0.0f, [self nombre], mSize.width, mSize.height);
    [monMonstre setFrame:monstreFrame];
    [self addSubview:monMonstre];
    [monMonstre release]; // <-- only if you don't use ARC (Automatic Reference Counting)
  }
  return self;
}

- (IBAction)boutonClic:(id)sender
{
  [self setNombre:[self nombre]+10];

  NSRect frame = [monMonstre frame];
  frame.origin.y = [self nombre];

  [monMonstre setFrame:frame]
}

- (void)setNombre:(int)nouveauNombre
{
  nombre=nouveauNombre;
}

- (int)nombre
{
  return nombre;
}

@end
于 2013-04-24T22:16:54.130 に答える