Skip to content

Instantly share code, notes, and snippets.

View DenisLitvin's full-sized avatar
🏖️
Dreaming of a travel

Denis DenisLitvin

🏖️
Dreaming of a travel
View GitHub Profile

Summary

iOS Developer inclined to performant and well-crafted code. Build apps, games, instruments for developers. Expert in Objective-C and Swift. Have 4+ years of coding experience. 3 years in the iOS industry. A highly motivated and result-driven developer looking for opportunities that will provide me, both, personal and professional growth.

Career Highlights

  •   Expertise in iOS, proficient with tvOS and watchOS. Familiar with Backend (Vapor) and Android development. 

  •   Deep understanding of UI fundamentals (e.g. View Controller lifecycle, etc.). Made adaptive and sophisticated layouts in code as well as in Storyboards and Xibs. Worked with Auto-Layout and other alternatives. Developed my own layout engine. Have a great understanding of Human Interface Guidelines.

ViewController {
//somewhere in code, handling tap
Router.present(ToVC.self, from: self)
}
extension ViewController: Routable {
var someColor = UIColor.red
var inputs: [Input] {
constrain(view1, view) { (view1, superview) in
view1.leading == superview.leading + 20
view1.trailing == superview.trailing - 20
view1.top == superview.top + 40
view1.height == 50
}
constrain(view2, view1, view) { (view2, view1, superview) in
view2.leading == view1.leading
view2.trailing == view1.trailing
view2.top == view1.bottom + 10
view1.makeConstraints(for: .top, .leading, .trailing, .height) { (make) in
make.pin(to: self.view.topAnchor, const: 40)
make.pin(to: self.view.leadingAnchor, const: 20)
make.pin(to: self.view.trailingAnchor, const: -20)
make.equal(50)
}
view2.makeConstraints(for: .top, .leading, .trailing, .bottom) { (make) in
make.pin(to: view1.bottomAnchor, const: 10)
make.pin(to: view1.leadingAnchor)
make.pin(to: view1.trailingAnchor)
view1.snp.makeConstraints { (make) in
make.leading.equalTo(view).offset(20)
make.trailing.equalTo(view).offset(-20)
make.top.equalTo(view).offset(40)
make.height.equalTo(50)
}
view2.snp.makeConstraints { (make) in
make.leading.equalTo(view1)
make.trailing.equalTo(view1)
view1.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20).isActive = true
view1.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20).isActive = true
view1.topAnchor.constraint(equalTo: view.topAnchor, constant: 40).isActive = true
view1.heightAnchor.constraint(equalToConstant: 50).isActive = true
view2.leadingAnchor.constraint(equalTo: view1.leadingAnchor).isActive = true
view2.trailingAnchor.constraint(equalTo: view1.trailingAnchor).isActive = true
view2.topAnchor.constraint(equalTo: view1.bottomAnchor, constant: 10).isActive = true
view2.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20).isActive = true
NSLayoutConstraint(item: view1, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 20).isActive = true
NSLayoutConstraint(item: view1, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1.0, constant: 40).isActive = true
NSLayoutConstraint(item: view1, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1.0, constant: -20).isActive = true
NSLayoutConstraint(item: view1, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 50).isActive = true
NSLayoutConstraint(item: view2, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 20).isActive = true
NSLayoutConstraint(item: view2, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1.0, constant: -20).isActive = true
NSLayoutConstraint(item: view2, attribute: .top, relatedBy: .equal, toItem: view1, attribute: .b
let views = ["view1": view1,
"view2": view2]
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[view1]-20-|", options: [], metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[view2]-20-|", options: [], metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-40-[view1]-10-[view2]-20-|", options: [], metrics: nil, views: views))
view.isHidden = true
NSLayoutConstraint.deactivate([constraint1, constraint2])
NSLayoutConstraint.deactivate([constraint1, constraint2])