Try passing CGrect to execute Selector withObject

I am trying to pass CGRect:

SEL frameSel = NSSelectorFromString(@"setFrame:");
CGRect rect = CGRectMake(10, 10, 200, 100);
[object performSelector:frameSel withObject:rect ];

But it does not compile

I also tried:

SEL frameSel = NSSelectorFromString(@"setFrame:");
CGRect rect = CGRectMake(10, 10, 200, 100);
NSValue * value = [NSValue valueWithCGRect:rect];
[object performSelector:frameSel withObject:value ];

Actually, this compiles, but when I debug, the frame is not configured correctly:

po object
<UILabel: 0x39220f0; frame = (0 0; 200 100); text = 'reflectionLabel'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x3922240>>

But it should be frame = (10 10; 200 100)

How can I solve this problem?

Thank you in advance!

+5
source share
2 answers
CGRect rect = CGRectMake(10, 10, 200, 100);
[object performSelector:frameSel withObject:rect ];

But it does not compile

That's right, because it rectis a structure, not a pointer to an object.

CGRect rect = CGRectMake(10, 10, 200, 100);
NSValue * value = [NSValue valueWithCGRect:rect];
[object performSelector:frameSel withObject:value ];

Actually, this compiles, but when I debug, the frame is not configured correctly:

po object
<UILabel: 0x39220f0; frame = (0 0; 200 100); text = 'reflectionLabel'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x3922240>>

Well, this is not bullshit, so it would seem that it worked, although the origin somehow remained zero. You can ask a separate question about this.

, performSelector:withObject:? , ; object.frame = rect?

+5

NSInvocation id :

CGRect rect = CGRectMake(104, 300, 105, 106);
UIView *view = [[UIView alloc] init];

NSMethodSignature *methodSig = [view methodSignatureForSelector:@selector(setFrame:)];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSig];
invocation.target = view;
invocation.selector = @selector(setFrame:);
[invocation setArgument:&rect atIndex:2];
[invocation invoke];
+5

All Articles