gpt4 book ai didi

ios - 如何在带基线的自动布局中设置垂直空间约束?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:56 24 4
gpt4 key购买 nike

View 中有两个标签。我的设计师会给我提供 markman,如下所示

enter image description here

但是,我只能像下面这样在Xcode中设置约束

enter image description here

我的意思是,设计人员需要我将两个标签与基线对齐,但是,我可以使用框架设置两个标签的空间。有没有一种方法可以使用 Autolayout 设置带有基线而不是标签框架的两个标签的空间?

最佳答案

感谢@Arkadiusz、@Fogmeister,我已经实现了一个 NSLayoutConstraint 类别来完成它。

@implementation NSLayoutConstraint (MarkmanSpace)
- (void)updateSpaceBetweenTopView:(UIView *)topView bottomView:(UIView *)bottomView {
UIFont *topViewFont = [self fontFromView:topView];
UIFont *bottomViewFont = [self fontFromView:bottomView];
if(topViewFont && bottomViewFont) {
CGFloat padding = fabs(topViewFont.descender) + fabs([self lowercaseGlyphTopBaselineHeightForFont:bottomViewFont]);
self.constant -= padding;
}

}

- (UIFont *)fontFromView:(UIView *)view {
UIFont *viewFont = nil;
if([view isKindOfClass:[UILabel class]]) {
viewFont = ((UILabel *)view).font;
}
return viewFont;
}

- (CGFloat)lowercaseGlyphTopBaselineHeightForFont:(UIFont *)font {
return font.ascender - font.xHeight;
}

@end

但是有一个问题,就是font.xHeight低于汉字的实际高度,

关于ios - 如何在带基线的自动布局中设置垂直空间约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420616/

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