美文网首页
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