gpt4 book ai didi

objective-c - 改变 CGRect(或任何结构)?

转载 作者:太空狗 更新时间:2023-10-30 03:57:22 24 4
gpt4 key购买 nike

我在代码中经常这样做:

self.sliderOne.frame  = CGRectMake(newX, 0, self.sliderOne.frame.size.width, self.sliderOne.frame.size.height); 

有什么办法可以避免这种繁琐的代码吗?我试过这种类型的东西:

self.sliderOne.frame.origin.x = newX;

但是我得到一个 Lvalue required as left operand of assignment 错误。

最佳答案

我终于听从了@Dave DeLong 的建议,做了一个分类。您所要做的就是将它导入任何想要利用它的类。

UIView+AlterFrame.h

#import <UIKit/UIKit.h>

@interface UIView (AlterFrame)

- (void) setFrameWidth:(CGFloat)newWidth;
- (void) setFrameHeight:(CGFloat)newHeight;
- (void) setFrameOriginX:(CGFloat)newX;
- (void) setFrameOriginY:(CGFloat)newY;

@end

UIView+AlterFrame.m

#import "UIView+AlterFrame.h"

@implementation UIView (AlterFrame)

- (void) setFrameWidth:(CGFloat)newWidth {
CGRect f = self.frame;
f.size.width = newWidth;
self.frame = f;
}

- (void) setFrameHeight:(CGFloat)newHeight {
CGRect f = self.frame;
f.size.height = newHeight;
self.frame = f;
}

- (void) setFrameOriginX:(CGFloat)newX {
CGRect f = self.frame;
f.origin.x = newX;
self.frame = f;
}

- (void) setFrameOriginY:(CGFloat)newY {
CGRect f = self.frame;
f.origin.y = newY;
self.frame = f;
}

@end

我可以使用 block 来 DRY 方法...我希望很快就会这样做。

后来:我刚刚注意到 CGRectOffsetCGRectInset,所以这个类别可以稍微清理一下(如果没有完全消除的话)。

关于objective-c - 改变 CGRect(或任何结构)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3190639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com