如何在Swift中修改SpriteKit节点的大小?

时间:2017-01-02 07:10:51

标签: ios swift sprite-kit swift3 skspritenode

在我的应用程序中,对于一个屏幕,我正在设置SpriteKit节点的大小和居中背景。例如,我正在设置背景子视图的大小,如下所示:

$scope.alertDayClick = function(event) {

    // if on month view go day view
    var view = uiCalendarConfig.calendars.myCalendar.fullCalendar( 'getView' );

    if (view.type === 'month') {
        console.log(view.type);
        uiCalendarConfig.calendars.myCalendar.fullCalendar('changeView','agendaDay');
        uiCalendarConfig.calendars.myCalendar.fullCalendar( 'gotoDate', event );
        return;
    }
}

虽然这适用于 iPhone 6 Plus ,但 iPhone 5 的较小屏幕/较低分辨率意味着其他节点的默认大小太大而不能适合他们的场景。

如何强制其他节点符合后台节点的大小? 我想用背景子视图的大小来划分每个子​​视图的大小,但不能直接在size属性上进行数学运算。

1 个答案:

答案 0 :(得分:5)

SpriteKit场景(SKScene)包含节点,节点(SKNode),它们具有sizeposition属性(类型CGSize和{{3} }}, 分别)。同样在iOS中,CGPoint UIView属性是frame对象,包含CGRectCGSize个对象。因此,了解如何使用CGSizeCGPoint确实有帮助。

SKNode大小和位置是的原因就像具有多个字段的简单C结构一样,因为它们是"复合类型",即它们每个都包含多个值。例如,CGSize包含widthheight属性,CGPoint包含xy属性。

因此,如果要调整节点的大小和位置(或UIView,通过其frame属性),则需要额外的步骤来访问属性。

如果您想分割尺寸,则必须分别访问width课程的heightCGSize属性。

一种方法是在一次操作中指定大小:

node.size = CGSize(width: node.size.width / backgroundNode.size.width,
   height: node.size.height / backgroundNode.size.height)

或者你可以这样做:

node.size.width =  node.size.width / backgroundNode.size.width
node.size.height = node.size.height / backgroundNode.size.height