美文网首页
2022-05-09 按钮的各种排布设置

2022-05-09 按钮的各种排布设置

作者: O_Ozz | 来源:发表于2022-05-09 10:39 被阅读0次

    网上试了下各种方法 感觉都不对,这个是最靠谱的

    总结模式: 

    - 图片在左,title在右 

    - 图片在上,title在下 :MKButtonEdgeInsetsStyleTop

    - 图片在右,title在左 

    - 图片在下,title在上

    - (void)layoutButtonWithEdgeInsetsStyle:(MKButtonEdgeInsetsStyle)style

                            imageTitleSpace:(CGFloat)space {

        // 1. 得到imageView和titleLabel的宽、高

        //    CGFloat imageWith = self.imageView.frame.size.width;

        //    CGFloat imageHeight = self.imageView.frame.size.height;

        CGFloat imageWith = self.currentImage.size.width;

        CGFloat imageHeight = self.currentImage.size.height;

        CGFloat labelWidth = 0.0;

        CGFloat labelHeight = 0.0;

        if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {

            // 由于iOS8中titleLabel的size为0,用下面的这种设置

            labelWidth = self.titleLabel.intrinsicContentSize.width;

            labelHeight = self.titleLabel.intrinsicContentSize.height;

        } else {

            labelWidth = self.titleLabel.frame.size.width;

            labelHeight = self.titleLabel.frame.size.height;

        }

        // 2. 声明全局的imageEdgeInsets和labelEdgeInsets

        UIEdgeInsets imageEdgeInsets = UIEdgeInsetsZero;

        UIEdgeInsets labelEdgeInsets = UIEdgeInsetsZero;

        // 3. 根据style和space得到imageEdgeInsets和labelEdgeInsets的值

        switch (style) {

            case MKButtonEdgeInsetsStyleTop: {

                imageEdgeInsets = UIEdgeInsetsMake(-labelHeight-space, 0, 0, -labelWidth);

                labelEdgeInsets = UIEdgeInsetsMake(0, -imageWith, -imageHeight-space, 0);

            }

                break;

            case MKButtonEdgeInsetsStyleLeft: {

                imageEdgeInsets = UIEdgeInsetsMake(0, -space, 0, space);

                labelEdgeInsets = UIEdgeInsetsMake(0, space, 0, -space);

            }

                break;

            case MKButtonEdgeInsetsStyleBottom: {

                imageEdgeInsets = UIEdgeInsetsMake(0, 0, -labelHeight-space, -labelWidth);

                labelEdgeInsets = UIEdgeInsetsMake(-imageHeight-space, -imageWith, 0, 0);

            }

                break;

            case MKButtonEdgeInsetsStyleRight: {

                imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth+space, 0, -labelWidth-space);

                labelEdgeInsets = UIEdgeInsetsMake(0, -imageWith-space, 0, imageWith+space);

            }

                break;

            default:

                break;

        }

        // 4. 赋值

        self.titleEdgeInsets = labelEdgeInsets;

        self.imageEdgeInsets = imageEdgeInsets;

    }

    相关文章

      网友评论

          本文标题:2022-05-09 按钮的各种排布设置

          本文链接:https://www.haomeiwen.com/subject/pjchurtx.html