Circle UIView未正确创建

时间:2016-08-22 09:54:14

标签: ios objective-c uiview

我正在尝试创建一个简单的圆形视图。 我以前做过,现在由于某种原因,圆圈不精确(附图像)。 在我的代码中,我采用“sliderPin”视图的高度,并且它的半值用于其图层的cornerRadius。 我也试图获取“sliderPin”视图的约束高度值,但我得到了相同的结果。 *宽度和宽度视图的高度相等。 我的代码:

[self.sliderPin.layer setBorderColor:borderColor];
[self.sliderPin.layer setBorderWidth:2];
self.sliderPin.clipsToBounds = YES;
self.sliderPin.layer.masksToBounds = YES;
[setCornerRadius:CGRectGetHeight(self.sliderPin.frame) / 2];

enter image description here

2 个答案:

答案 0 :(得分:3)

最好使用给定方法的UISlider。它可能会解决您的问题。

    UIImage *minImage = [[UIImage imageNamed:@"slider_minimum.png"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
    UIImage *maxImage = [[UIImage imageNamed:@"slider_maximum.png"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
    UIImage *thumbImage = [UIImage imageNamed:@"thumb.png"];

         [[UISlider appearance] setMaximumTrackImage:maxImage 
            forState:UIControlStateNormal];
        [[UISlider appearance] setMinimumTrackImage:minImage 
            forState:UIControlStateNormal];
        [[UISlider appearance] setThumbImage:thumbImage 
            forState:UIControlStateNormal];

高度:

您可以通过继承UISlider和覆盖方法

进行自定义
- (CGRect)trackRectForBounds:(CGRect)bounds {
    CGRect rect = CGRectMake(0, 0, 100, 30);//change it to any size you want
    return rect;
}

您可以通过继承相应的方法来自定义更多内容。

enter image description here enter image description here

感谢。

答案 1 :(得分:0)

确保constraints没有冲突。如果您使用的是auto layout,请设置sliderPin的宽度和高度等于约束或宽高比1:1可能会解决问题。