gpt4 book ai didi

iOS:视觉格式限制被打破

转载 作者:行者123 更新时间:2023-11-29 13:10:52 25 4
gpt4 key购买 nike

我正在尝试在 map 上放置一个按钮,并将其限制为距左侧 10 点,距底部 10 点。但是,当我在模拟器中运行它时,它告诉我我的约束被打破了。这是我的代码。我错过了什么?

_map = [[MKMapView alloc] init];
[self setView:_map];
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(39.810166, -86.156708);

_loc = [[TCMLocationPoint alloc] initWithCoordinate:coord title:@"My Location" subtitle:@"My Subtitle"];
[_loc setParent:_map];
[_map addAnnotation:_loc];

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coord, 2000, 2000);
[_map setRegion:region animated:NO];

_directionsButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[_directionsButton addTarget:self action:@selector(getLocation:) forControlEvents:UIControlEventTouchDown];
[_directionsButton setTitle:@"Get Directions" forState:UIControlStateNormal];
[_directionsButton setFrame:CGRectMake(0.0, 0.0, 150.0, 25.0)];

[[self view] addSubview:_directionsButton];

NSDictionary *nameMap = @{@"button" : _directionsButton};
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[button]-(>=0)-|"
options:0
metrics:nil
views:nameMap];
[[self view] addConstraints:horizontalConstraints];
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(>=0)-[button]-10-|"
options:0
metrics:nil
views:nameMap];

[[self view] addConstraints:verticalConstraints];

最佳答案

几个想法:

  1. 我会设置 translatesAutoresizingMaskIntoConstraintsNO

  2. 您也可以简化您的 VFL,并消除 >=0 内容。您还可以直接在 VFL 中设置宽度和高度。

  3. 您也不需要设置框架。让约束设置宽度,高度。

  4. 除非您在 loadView 中执行此操作,否则我建议您将 map 添加为 subview ,而不是尝试设置 self.view

因此:

_map = [[MKMapView alloc] init];
_map.delegate = self; // if you've implemented any `MKMapViewDelegate` methods, you should set your delegate
[_map setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:_map];
NSDictionary *views = @{@"map" : _map};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[map]|"
options:0
metrics:nil
views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[map]|"
options:0
metrics:nil
views:views]];

// do your stuff where you're adding your annotation here

_directionsButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[_directionsButton addTarget:self action:@selector(getLocation:) forControlEvents:UIControlEventTouchDown];
[_directionsButton setTitle:@"Get Directions" forState:UIControlStateNormal];
[_directionsButton setTranslatesAutoresizingMaskIntoConstraints:NO];

[[self view] addSubview:_directionsButton];

NSDictionary *nameMap = @{@"button" : _directionsButton};

NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[button(150)]"
options:0
metrics:nil
views:nameMap];
[[self view] addConstraints:horizontalConstraints];

NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[button(25)]-10-|"
options:0
metrics:nil
views:nameMap];
[[self view] addConstraints:verticalConstraints];

您甚至可能希望将宽度和高度约束的优先级设置为小于 1000,这样如果字体要求按钮应该大一点,您将让它变大,例如@"H:|-10-[button(150@500)]"@"V:[button(25@500)]-10-|"

关于iOS:视觉格式限制被打破,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17427412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com