Back to list

SnapKit-style Auto Layout

Lv.51782@mukitaro0 playsJan 2, 2026

SnapKit Auto Layout DSL pattern. Clean constraint syntax for iOS.

preview.swift
Swift
1import UIKit
2import SnapKit
3
4class ProfileView: UIView {
5 private let avatarImageView = UIImageView()
6 private let nameLabel = UILabel()
7 private let emailLabel = UILabel()
8 private let bioLabel = UILabel()
9 private let followButton = UIButton(type: .system)
10
11 override init(frame: CGRect) {
12 super.init(frame: frame)
13 setupViews()
14 setupConstraints()
15 }
16
17 required init?(coder: NSCoder) {
18 fatalError("init(coder:) has not been implemented")
19 }
20
21 private func setupViews() {
22 avatarImageView.layer.cornerRadius = 40
23 avatarImageView.clipsToBounds = true
24
25 nameLabel.font = .boldSystemFont(ofSize: 18)
26 emailLabel.font = .systemFont(ofSize: 14)
27 emailLabel.textColor = .gray
28 bioLabel.numberOfLines = 0
29
30 [avatarImageView, nameLabel, emailLabel, bioLabel, followButton].forEach { addSubview($0) }
31 }
32
33 private func setupConstraints() {
34 avatarImageView.snp.makeConstraints { make in
35 make.top.equalToSuperview().offset(16)
36 make.centerX.equalToSuperview()
37 make.size.equalTo(80)
38 }
39
40 nameLabel.snp.makeConstraints { make in
41 make.top.equalTo(avatarImageView.snp.bottom).offset(12)
42 make.centerX.equalToSuperview()
43 }
44
45 emailLabel.snp.makeConstraints { make in
46 make.top.equalTo(nameLabel.snp.bottom).offset(4)
47 make.centerX.equalToSuperview()
48 }
49
50 followButton.snp.makeConstraints { make in
51 make.top.equalTo(emailLabel.snp.bottom).offset(16)
52 make.centerX.equalToSuperview()
53 make.width.equalTo(120)
54 make.height.equalTo(44)
55 }
56 }
57}

Custom problems are not included in rankings