如何使用cgsize make?

15

我一直在尝试使用cgsizemake,如下所示:

我想使用cgrectmake改变图像的框架大小,而不是更改坐标。

到目前为止,我已经尝试过:

 maincharacter.frame = cgsizemake (14, 14); 

但我不断收到错误提示:

将CGsize类型赋值给不兼容的CGrect类型


5
请注意,Objective-C 是区分大小写的。请在您的问题中使用正确的大小写以便表达清晰。 - rmaddy
在框架中,您需要提供CGRECT。框架具有x轴、y轴、宽度和高度。这就是为什么会出现“从不兼容的类型CGsize分配到cgrect”的情况。 - Vishal Sharma
6个回答

19

其中一个解决方案是:

CGRect frame = maincharacter.frame;
frame.size = CGSizeMake(14, 14);
maincharacter.frame = frame;

14

CGSize仅接受高度和宽度参数

CGSize c=CGSizeMake(width, height);

如果您想设置框架大小,请使用CGRectMake。

maincharacter.frame=CGRectMake(x-origin,y-origin, width, height);

如果你不使用变量c,那么它的作用是什么?这个答案并没有展示如何使用CGSizeMake来更新一个框架。 - rmaddy

1
主角的.frame必须返回4个参数(x、y、宽度、高度),而CGSizeMake只有"width"和"height"这两个参数。因此,您会收到错误提示。解决方法是使用frame.size,该方法返回2个参数以与CGSizeMake(14, 14)配合使用。

0
要使用类型为CGSize的变量c,您需要分别调用c.0c.1来获取其高度和宽度。我不知道为什么他们将这些属性命名为0和1,但您可以向Dennis Ritchie提出这个问题。
以下是CGSizeMake的示例用法:
        var makeSize =  CGSizeMake(size.0, size.1)
        let circ = SKShapeNode(ellipseOfSize: makeSize)

希望这有所帮助。

0
 CGSize viewwidth;
    viewwidth=[[UIScreen mainScreen] bounds].size;

这将帮助您使用cgsize获取设备当前分辨率。

viewwidth.width or viewwidth.height

如上所述,您可以使用它。还可以使用以下代码:

rightslide=[[UIView alloc]initWithFrame:CGRectMake(0,0, viewwidth.width, viewwidth.height)];

0

下面是在UIScrollView中使用CGSizeMake的示例

var mainScrollView: UIScrollView?
var numPages = 3

override func viewDidLoad() {
    super.viewDidLoad()

    //this gets the screen frames size
    var fm: CGRect = UIScreen.mainScreen().bounds

    //creates a UIScrollView programmatically
    self.mainScrollView = UIScrollView(frame:CGRectMake(0, 0, fm.size.width, fm.size.height))

    self.mainScrollView!.contentSize = CGSizeMake(self.mainScrollView!.frame.size.width, self.mainScrollView!.frame.size.height * CGFloat(numPages))
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接