Ios 仅更改图幅中的1个值

Ios 仅更改图幅中的1个值,ios,view,frame,cgrect,Ios,View,Frame,Cgrect,我对iOS有些陌生,要更改视图的宽度或高度,我使用以下代码: view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, newHeight); 这感觉不对,因为我将所有旧值复制到一个新的rect中只是为了更改一个值,但我不能这样做:

我对iOS有些陌生,要更改视图的宽度或高度,我使用以下代码:

view.frame = CGRectMake(view.frame.origin.x,
                        view.frame.origin.y,
                        view.frame.size.width,
                        newHeight);
这感觉不对,因为我将所有旧值复制到一个新的rect中只是为了更改一个值,但我不能这样做:

view.frame.size.height = newHeight;

有更好的方法吗?

您不能直接赋值。您必须为其创建一个变量:

CGRect frame = view.frame;
frame.size.height = newHeight;
view.frame = frame;    // or [view setFrame:frame];

不能直接指定值。您必须为其创建一个变量:

CGRect frame = view.frame;
frame.size.height = newHeight;
view.frame = frame;    // or [view setFrame:frame];

另一种帮助您将框架变量保持在不同范围内的方法:

view.frame = ({
    CGRect frame = view.frame;
    frame.size.height = newHeight;
    frame;
});

另一种帮助您将框架变量保持在不同范围内的方法:

view.frame = ({
    CGRect frame = view.frame;
    frame.size.height = newHeight;
    frame;
});

不能指定CGRect的单个属性不能指定CGRect的单个属性