繁体   English   中英

了解纵横比约束和乘数

[英]Understanding the Aspect ratio constraint and multiplier

我已经以编程方式创建了UIScrollview 并且我在此滚动视图中添加了一些以编程方式创建的按钮。 按钮的高度为30。但是按钮的宽度根据屏幕尺寸而变化。

float scrollYearX=btnLeftArrow.frame.origin.x+btnLeftArrow.frame.size.width+15;
float scrollYearY=40.0;
float scrollYearWidth=btnRightArrow.frame.origin.x-15-scrollYearX;
float scrollYearHeight=50.0;
scrollYear=[[UIScrollView alloc] initWithFrame:CGRectMake(scrollYearX, scrollYearY, scrollYearWidth, scrollYearHeight)];

[scrollYear setShowsHorizontalScrollIndicator:NO];
[scrollYear setShowsVerticalScrollIndicator:NO];

[vwParent addSubview:scrollYear];
int buttonX=0;

for (int i=0; i<100; i++) {
    UIButton *btn=[[UIButton alloc] initWithFrame:CGRectMake(buttonX, 0, scrollYearWidth/5, 30)];
    [btn.titleLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:14.0]];

    int mod=i%2;
    if (mod==1) {
        [btn setTitle:@"-" forState:UIControlStateNormal];
        [btn.titleLabel setTextColor:[UIColor whiteColor]];

    }
    else
    {
        [btn addTarget:self action:@selector(yearClick :) forControlEvents:UIControlEventTouchUpInside];
        [btn setTitle:[NSString stringWithFormat:@"%li",(long)backYear] forState:UIControlStateNormal];
        if (backYear==year) {
            btnCurrentYear=btn;
            [btn setBackgroundImage:[UIImage imageNamed:@"yearSelect"] forState:UIControlStateNormal];
        }
        backYear++;
    }
    [scrollYear addSubview:btn];
    btnLast=btn;
    buttonX=buttonX+btn.frame.size.width;
}
[scrollYear setContentSize:CGSizeMake(btnLast.frame.origin.x+btnLast.frame.size.width, scrollYearHeight)];
[scrollYear setContentOffset:CGPointMake(btnCurrentYear.frame.origin.x-(btnLast.frame.size.width*2),0)];

我的问题是我应该使用哪个约束才能在每个设备中正确显示此约束。 在这里,我附加了它在6s和ipad pro上的显示方式。 如何使ipad pro的视觉效果与6s相同。

6秒内扣上按钮

在此处输入图片说明

iPad Pro中的按钮外观 在此处输入图片说明

请帮我。 谢谢

这是因为您的按钮背景宽度已缩放。 您需要使用可调整大小的图像来保持圆形边缘。 请按照以下步骤更改背景图片:

UIImage* backgroundImage = [UIImage imageNamed:@"yearSelect"];
backgroundImage = [backgroundImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, backgroundImage.size.width/2-1, 0, backgroundImage.size.width/2)];
[btn setBackgroundImage:backgroundImage forState:UIControlStateNormal];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM