Ios 我真的必须为UIView的每个子视图添加子视图吗?
我有一个映射框视图,我正在设置它,然后将其添加为子视图。我认为在添加Mapbox视图时,该视图的子视图也会被添加是合理的。但是,似乎我需要为第一个视图的每个子视图调用addSubView 以下是我的ViewController.swift的全部内容:Ios 我真的必须为UIView的每个子视图添加子视图吗?,ios,swift,storyboard,Ios,Swift,Storyboard,我有一个映射框视图,我正在设置它,然后将其添加为子视图。我认为在添加Mapbox视图时,该视图的子视图也会被添加是合理的。但是,似乎我需要为第一个视图的每个子视图调用addSubView 以下是我的ViewController.swift的全部内容: import UIKit class ViewController: UIViewController { @IBOutlet weak var locationButton: UIButton! @IBOutlet weak
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var locationButton: UIButton!
@IBOutlet weak var buttonView: UIView!
@IBOutlet var mapView: MGLMapView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "mapbox://styles/billofbong/xxx/draft")
mapView = MGLMapView(frame: view.bounds, styleURL: url);
mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
mapView.setCenter(CLLocationCoordinate2D(latitude: xxx, longitude: -xxx), zoomLevel: 15, animated: false)
mapView.showsUserLocation = true
mapView.showsHeading = true;
view.addSubview(mapView)
view.addSubview(buttonView)
}
@IBAction func onLocationButtonPressed(_ sender: Any) {
mapView.userTrackingMode = .followWithHeading
}
}
我之所以将Mapbox视图添加为子视图,而不是将其作为ViewController中的原始视图,是因为当它是活动视图时,更改参数似乎没有任何作用,所以我只能使用默认的贴图参数
以下是我的故事板截图:
有人能解释一下addSubView的情况吗?如果我有一堆纽扣呢?我真的必须以编程方式添加每一个吗?我做错了什么?是的,您必须将每个按钮添加到视图中。XCode应该如何确定这些元素的位置呢?我删除了我的ViewController,添加了一个新的,链接了所有的IBoutlet,现在它工作正常了。我一定是把第一个ViewController弄糟了。在使用IBOutlets时,您似乎已经将视图添加到了情节提要。@Sweeper视图在情节提要中,您是对的,但是它们在运行时不会出现,除非我添加子视图。您是否在情节提要的属性检查器中输入了样式URL?该按钮将作为情节提要的结果出现在视图层次结构中,但您添加的地图视图的边界等于整帧,因此该按钮将位于其后面,因此不可见。您应该能够将UIView添加到情节提要中,并将其自定义类设置为MGLMapView,然后在中设置任何所需的属性viewDidLoad@Paulw11情节提要中的地图视图是MGLMapView类型,除非它是情节提要入口点,否则所有视图都可以工作,在这种情况下,我无法更改其属性。有没有办法让按钮像在情节提要中一样出现在地图视图的前面?我尝试了view.BringSubview到FrontButtonView,但这并没有改变任何事情。我想我只是认为这就是孩子们的全部想法。该按钮是该视图的子视图,它是另一个视图的子视图。我以为XCode会知道把它们放在哪里,因为我把它们拖到了故事板上。显然这不是统一,但在统一中,当你实例化一个预置时,它的所有子对象都被实例化,并附加到它。谢谢你的回答。啊,现在我明白了!您的问题可能与缺少布局约束或配置错误的自动布局有关。更多信息: