SDCycleScrollView icon indicating copy to clipboard operation
SDCycleScrollView copied to clipboard

[DONE] iOS 14 小点点消失了,有人是这样吗?

Open ieliwb opened this issue 4 years ago • 22 comments

RT,pageDot 不见了

ieliwb avatar Sep 17 '20 08:09 ieliwb

@gsdios

ieliwb avatar Sep 17 '20 08:09 ieliwb

我也是这个情况 大家有解决的吗?

LucaLiu avatar Sep 18 '20 05:09 LucaLiu

I have the same problem.

gongbojie avatar Sep 21 '20 06:09 gongbojie

一样,正在研究解决方法

nijino avatar Sep 21 '20 07:09 nijino

一样有这个问题有大佬解决了吗

PZXforXcode avatar Sep 22 '20 07:09 PZXforXcode

@gsdios 作者还会更新这个库吗

PZXforXcode avatar Sep 22 '20 07:09 PZXforXcode

需要自定义pageControl,因为内部UI结构已经更改了,API都更新了

Mamakou avatar Sep 22 '20 12:09 Mamakou

问题解决: SDCycleScrollView.m中 全局搜 self.pageControl.frame = CGRectMake(x, y, size.width, size.height); 替换为
if (@available(iOS 14.0, *)) { [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self); make.bottom.offset(-10); make.height.offset(self.pageControlDotSize.height); }]; }else{ self.pageControl.frame = CGRectMake(x, y, size.width, size.height); }

OyesOnoOmg avatar Sep 23 '20 02:09 OyesOnoOmg

楼上的方法可以解决,不过需要在 SDCycleScrollView 中引入 Masonry 库,另外适配的代码在 SDCycleScrollView.m 的 525 行,需要这么写: if (@available(iOS 14.0, *)) { [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self); make.bottom.offset(-10); make.height.offset(self.pageControlDotSize.height); }]; } else { CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height); pageControlFrame.origin.y -= self.pageControlBottomOffset; pageControlFrame.origin.x -= self.pageControlRightOffset; self.pageControl.frame = pageControlFrame; }

nijino avatar Sep 23 '20 05:09 nijino

It works! But my code is:

    if (@available(iOS 14.0, *)) {
        [self addSubview:self.pageControl];
        [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.equalTo(self);
            make.bottom.offset(-10);
            make.height.offset(self.pageControlDotSize.height);
        }];
    } else {
        CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height);
        pageControlFrame.origin.y -= self.pageControlBottomOffset;
        pageControlFrame.origin.x -= self.pageControlRightOffset;
        self.pageControl.frame = pageControlFrame;
    }

If i haven't write this line:[self addSubview:self.pageControl];, the app will crash.

Thread 1: "couldn't find a common superview for <UIPageControl: 0x11fe1e230; frame = (0 0; 0 0); autoresize = W; userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x2832ee460>; layer = <CALayer: 0x283c4d6a0>> and <SDCycleScrollView: 0x11fe30450; frame = (0 0; 345 80); clipsToBounds = YES; layer = <CALayer: 0x283c4e180>>"

gongbojie avatar Sep 23 '20 06:09 gongbojie

问题解决: SDCycleScrollView.m中 全局搜 self.pageControl.frame = CGRectMake(x, y, size.width, size.height); 替换为 if ([self.pageControl isKindOfClass:[TAPageControl class]]) { CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height); pageControlFrame.origin.y -= self.pageControlBottomOffset; pageControlFrame.origin.x -= self.pageControlRightOffset; self.pageControl.frame = pageControlFrame; }else{ if (_pageControlAliment == SDCycleScrollViewPageContolAlimentRight) { [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { if (@available(iOS 14.0, *)) { make.right.equalTo(self).offset(25); }else{ make.right.equalTo(self).offset(-_pageControlRightOffset); } make.bottom.offset(-self.pageControlBottomOffset); make.height.offset(self.pageControlDotSize.height); }]; }else{ [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self); make.bottom.offset(-self.pageControlBottomOffset); make.height.offset(self.pageControlDotSize.height); }]; } }

huangfangkai avatar Sep 23 '20 09:09 huangfangkai

It works! But my code is:

    if (@available(iOS 14.0, *)) {
        [self addSubview:self.pageControl];
        [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.equalTo(self);
            make.bottom.offset(-10);
            make.height.offset(self.pageControlDotSize.height);
        }];
    } else {
        CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height);
        pageControlFrame.origin.y -= self.pageControlBottomOffset;
        pageControlFrame.origin.x -= self.pageControlRightOffset;
        self.pageControl.frame = pageControlFrame;
    }

If i haven't write this line:[self addSubview:self.pageControl];, the app will crash.

Thread 1: "couldn't find a common superview for <UIPageControl: 0x11fe1e230; frame = (0 0; 0 0); autoresize = W; userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x2832ee460>; layer = <CALayer: 0x283c4d6a0>> and <SDCycleScrollView: 0x11fe30450; frame = (0 0; 345 80); clipsToBounds = YES; layer = <CALayer: 0x283c4e180>>"

I didn't encounter this situation,but I saw the pagecontrol ivar has been added in its superview at line 401 or 414 in SDCycleScrollView.m file.

nijino avatar Sep 23 '20 10:09 nijino

It works! But my code is:

    if (@available(iOS 14.0, *)) {
        [self addSubview:self.pageControl];
        [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.equalTo(self);
            make.bottom.offset(-10);
            make.height.offset(self.pageControlDotSize.height);
        }];
    } else {
        CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height);
        pageControlFrame.origin.y -= self.pageControlBottomOffset;
        pageControlFrame.origin.x -= self.pageControlRightOffset;
        self.pageControl.frame = pageControlFrame;
    }

If i haven't write this line:[self addSubview:self.pageControl];, the app will crash.

Thread 1: "couldn't find a common superview for <UIPageControl: 0x11fe1e230; frame = (0 0; 0 0); autoresize = W; userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x2832ee460>; layer = <CALayer: 0x283c4d6a0>> and <SDCycleScrollView: 0x11fe30450; frame = (0 0; 345 80); clipsToBounds = YES; layer = <CALayer: 0x283c4e180>>"

I didn't encounter this situation,but I saw the pagecontrol ivar has been added in its superview at line 401 or 414 in SDCycleScrollView.m file.

Thanks,I notice that.I find this crash because of Masonry.I know that set the Auto Layout before the pageControl(subView) add to the superview(SDCycleScrollView). I track line 401 and line 414 pageControl's address is the same as self.pageControl.But if i not write [self addSubview:self.pageControl];again.App will crush because of that reason.

gongbojie avatar Sep 24 '20 03:09 gongbojie

I think you can find these codes in SDCycleScrollView.m version 1.80

       CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height);
        pageControlFrame.origin.y -= self.pageControlBottomOffset;
        pageControlFrame.origin.x -= self.pageControlRightOffset;
        self.pageControl.frame = pageControlFrame;

then replace that:

    if (@available(iOS 14.0, *)) {
        self.pageControl.translatesAutoresizingMaskIntoConstraints = NO;
        [[self.pageControl.centerXAnchor constraintEqualToAnchor:self.centerXAnchor] setActive:YES];
        [[self.pageControl.bottomAnchor constraintEqualToAnchor:self.bottomAnchor constant:-10] setActive:YES];
        [[self.pageControl.heightAnchor constraintEqualToConstant:self.pageControlDotSize.height] setActive:YES];
    } else {
        CGRect pageControlFrame = CGRectMake(x, y, size.width, size.height);
        pageControlFrame.origin.y -= self.pageControlBottomOffset;
        pageControlFrame.origin.x -= self.pageControlRightOffset;
        self.pageControl.frame = pageControlFrame;
    }

it works!

oymuzi avatar Sep 24 '20 06:09 oymuzi

费那劲干嘛?

if (@available(iOS 14.0, *)) {
    x = 0;
    size.width = self.sd_width;
}

如图位置

效果图,左边:之前;右边:改之后

douxindong avatar Sep 24 '20 08:09 douxindong

费那劲干嘛?

if (@available(iOS 14.0, *)) {
    x = 0;
    size.width = self.sd_width;
}

如图位置

image

效果图,左边之前

image

Thanks,the code solve the problem,too.👌

if (@available(iOS 14.0, *)) {
        x = 0;
        size.width = self.frame.size.width;
}

gongbojie avatar Sep 25 '20 01:09 gongbojie

费那劲干嘛?

if (@available(iOS 14.0, *)) {
    x = 0;
    size.width = self.sd_width;
}

如图位置

image

效果图,左边之前

image

棒👍

Gaozn avatar Sep 26 '20 02:09 Gaozn

这样改了,右边那个属性就没作用了呀

huangfangkai avatar Sep 27 '20 03:09 huangfangkai

    CGSize size = CGSizeZero;
    if ([self.pageControl isKindOfClass:[TAPageControl class]]) {
        TAPageControl *pageControl = (TAPageControl *)_pageControl;
        if (!(self.pageDotImage && self.currentPageDotImage && CGSizeEqualToSize(kCycleScrollViewInitialPageControlDotSize, self.pageControlDotSize))) {
            pageControl.dotSize = self.pageControlDotSize;
        }
        size = [pageControl sizeForNumberOfPages:self.imagePathsGroup.count];
    } else {
        size = CGSizeMake(self.imagePathsGroup.count * self.pageControlDotSize.width * 1.5, self.pageControlDotSize.height);
        
        // add code
        if (@available(iOS 14.0, *)) {
            if ([self.pageControl isKindOfClass:[UIPageControl class]]) {
                UIPageControl *pageControl = (UIPageControl *)_pageControl;
                size.width = [pageControl sizeForNumberOfPages:self.imagePathsGroup.count].width;
            }
        }
    }

cywd avatar Sep 29 '20 11:09 cywd

mark

Free-am avatar Oct 29 '20 06:10 Free-am

已经修复,并发布1.82版本

gsdios avatar Nov 02 '20 13:11 gsdios

已经修复,并发布1.82版本

👍

douxindong avatar Nov 04 '20 05:11 douxindong