【问题标题】:UISlider bar disappears using auto layout programmaticallyUISlider 栏以编程方式使用自动布局消失
【发布时间】:2015-05-02 11:39:29
【问题描述】:

我以编程方式创建了一个 UISlider,在添加两个自动布局约束后,滑块不再出现。我看到滑块的小块/圆圈,但没有别的。

// create slider programmatically

    _sliderFrame = CGRectMake(10.0f, 10.0f, 250.0f, 400.0f);

    _sliderCalibrate = [[UISlider alloc] initWithFrame:_sliderFrame];

    _sliderCalibrate.minimumValue = 1.0f;

    _sliderCalibrate.maximumValue = 100.0f;

    _sliderCalibrate.value = 50.0f;

    // manually specify Auto Layout constraints in code
    [_sliderCalibrate setTranslatesAutoresizingMaskIntoConstraints:NO];

    // add slider to view
    [self.view addSubview:_sliderCalibrate];


NSLayoutConstraint *centerSliderX = [NSLayoutConstraint constraintWithItem:_sliderCalibrate
                                                               attribute:NSLayoutAttributeCenterX
                                                               relatedBy:NSLayoutRelationEqual toItem:_sliderCalibrate.superview
                                                               attribute:NSLayoutAttributeCenterX
                                                              multiplier:1.0
                                                                constant:0.0];

    NSLayoutConstraint *centerSliderY = [NSLayoutConstraint constraintWithItem:_sliderCalibrate
                                                               attribute:NSLayoutAttributeCenterY
                                                               relatedBy:NSLayoutRelationEqual toItem:_sliderCalibrate.superview
                                                               attribute:NSLayoutAttributeCenterY
                                                              multiplier:1.0
                                                                constant:0.0];
    [_sliderCalibrate.superview addConstraints:@[centerSliderX, centerSliderY]];

【问题讨论】:

    标签: ios objective-c autolayout


    【解决方案1】:

    你不应该在使用自动布局时设置任何框架,所以只需使用[UISlider new] 创建滑块;添加宽度约束,或删除 centerX 约束,并在超级视图的两个边缘添加约束,以使滑块具有非零宽度。

    【讨论】:

      【解决方案2】:

      通过调用 setFrame:​ 来初始化对象,您无需在手动放置的视图上使用参数 NO 调用 setTranslatesAutoresizingMaskIntoConstraints:​。

      只需删除这行代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-16
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多