了解subview.center = view.center的工作原理以及getter和setter执行不同操作的原因

use*_*500 3 objective-c xamarin.ios ios

我看到很多代码解释了如何在视图中居中子视图.代码示例通常如下所示:

SubView.center = view.center;
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这是如何工作的吗?我只是不明白.

view.center给出了视图的中心点.例如,宽度为100,高度为100,它将返回(50,50).我知道了.

设置subview.center对我来说很奇怪. subview.center将返回子视图的中心点.不知何故,将其设置为(50,50)会将子视图定位在其父级中,坐标为50/50.但是如果子视图本身宽度为50且高度为50,则访问此属性将返回let(),然后返回(25,25).

我的意思是什么?这里的概念对我来说很奇怪,因为setter和getter正在做不同的功能.

如果有人可以解释这个,请做.或者,如果我离开基地,我也想知道.我是iOS开发的新手.

如果我是正确的,这确实是它的工作方式,你不会认为这是一种反模式.当然,在.NET中,这样的东西就是反模式.也许不适合Obj-C?

Sat*_*ito 7

将子视图居中在视图中.我认为以下代码是正确的.

Swift 3.0:

SubView.center = CGPoint(x: view.bounds.midX, y: view.bounds.midY );
Run Code Online (Sandbox Code Playgroud)

Swift 2.2:

SubView.center = CGPointMake( CGRectGetMidX( view.bounds ), CGRectGetMidY( view.bounds ) );
Run Code Online (Sandbox Code Playgroud)