Upvote:2
class ViewController: UIViewController {
let viewA: UIView = {
let v = UIView()
v.backgroundColor = .systemYellow
return v
}()
let viewARedView: UIView = {
let v = UIView()
v.backgroundColor = .systemRed
return v
}()
let viewABlueView: UIView = {
let v = UIView()
v.backgroundColor = .systemBlue
return v
}()
let viewB: UIView = {
let v = UIView()
v.backgroundColor = .systemYellow
return v
}()
let viewBRedView: UIView = {
let v = UIView()
v.backgroundColor = .systemRed
return v
}()
let viewBBlueView: UIView = {
let v = UIView()
v.backgroundColor = .systemBlue
return v
}()
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.setNavigationBarHidden(true, animated: false)
view.addSubview(viewA)
view.addSubview(viewB)
viewA.frame = CGRect(x: 20, y: 60, width: 200, height: 200)
viewB.frame = CGRect(x: 20, y: viewA.frame.maxY + 20, width: 600, height: 600)
viewA.addSubview(viewARedView)
viewA.addSubview(viewABlueView)
let origRect: CGRect = CGRect(x: 30, y: 20, width: 50, height: 25)
// set frames of red and blue rect to the same rectangles
// so blue is on top of red
// we're going to transform the blue rect
viewARedView.frame = origRect
viewABlueView.frame = origRect
// scale values
let scX: CGFloat = 2.25
let scY: CGFloat = 1.75
// translate values
let trX: CGFloat = 30.0
let trY: CGFloat = 100.0
// rotation value
let rot: CGFloat = .pi * -0.15
var tx: CGAffineTransform = .identity
// scale it
tx = tx.concatenating(CGAffineTransform(scaleX: scX, y: scY))
// move it
tx = tx.concatenating(CGAffineTransform(translationX: trX, y: trY))
// rotate it
tx = tx.concatenating(CGAffineTransform(rotationAngle: rot))
// apply the transform
viewABlueView.transform = tx
viewB.addSubview(viewBRedView)
viewB.addSubview(viewBBlueView)
// get the scale factor...
// in this case,
// viewA width is 200
// viewB width is 700
// so viewB is 3.5 times bigger (700 / 200)
let scaleFactor: CGFloat = viewB.frame.width / viewA.frame.width
// make the original rect origin and size
// "scaleFactor bigger"
let newRect: CGRect = CGRect(x: origRect.origin.x * scaleFactor,
y: origRect.origin.y * scaleFactor,
width: origRect.width * scaleFactor,
height: origRect.height * scaleFactor)
// set frames of red and blue rect to the same rectangles
// so blue is on top of red
// we're going to transform the blue rect
viewBRedView.frame = newRect
viewBBlueView.frame = newRect
// scale the translation values
let trXb: CGFloat = trX * scaleFactor
let trYb: CGFloat = trY * scaleFactor
var txb: CGAffineTransform = .identity
// we've already changed the initial size of the rectangle,
// so use same scaling values
txb = txb.concatenating(CGAffineTransform(scaleX: scX, y: scY))
// we need to use scaled translation values
txb = txb.concatenating(CGAffineTransform(translationX: trXb, y: trYb))
// rotation doesn't change based on scale
txb = txb.concatenating(CGAffineTransform(rotationAngle: rot))
// apply the transform
viewBBlueView.transform = txb
}
}
Credit Goes to: stackoverflow.com
Related question with same questions but different answers
- CALCULATE NEW SIZE AND LOCATION ON A CGRECT IN IOS
- SWIFT - HOW TO SHOW A UIACTIVITYINDICATORVIEW AT THE SAME LOCATION WITHOUT SHIFTING TO THE RIGHT? IN IOS
- APPLE: APP REQUESTS THE USER’S CONSENT TO ACCESS THE LOCATION, BUT DOESN’T SUFFICIENTLY EXPLAIN THE USE OF THE LOCATION IN IOS
- HOW TO ESTIMATE PREFERRED UIVIEW SIZE WHERE ONE OF THE CHILD VIEWS USES RATIO CONSTRAINT? IN IOS
- GEOCODER FINDING LOCATION SOMETIMES IN IOS
- HOW TO GIVE SIZE TO TABLE VIEW TO XIB IN IOS
- IOS FLUTTER- HOW TO SIZE STRING EMOJI? IN IOS
- CONFIGURING LOCATION W/ UITAPGESTURERECOGNIZER? IN IOS
- DYNAMIC LIST OF FIXED SIZE SHORT[] ARRAYS IN IOS
- SWIFT 5 REMOTE IMAGE LOADS IN UITABLEVIEWCELL ON CLICK NOT ON LOAD IN IOS
- DELEGATE AND DATASOURCE NOT WOKING IN MESSAGEKIT SWIFT IOS IN IOS
- HOW TO WRAP #AVAILABLE IN THIS CUSTOM .IF EXTENSION ON A SWIFTUI VIEW? IN IOS
- HOW TO LOAD DATA FROM MORE THEN ONE LOCAL JSON FILE TO THE LABELS IN TABLE VIEW USING SWIFT IN IOS
- WHAT ARE THE PACKAGE NAME FOR GOOGLE MEET AND MICROSOFT TEAMS IN ANDROID AND IOS? IN IOS
- ADDING GRADIENT TO UILABEL THROUGH EXTENSION IN IOS
- NSSET OF NESTED SUBPROPERTY FROM SET IN IOS
- MODULE 'ADSERVICES' NOT FOUND (REACT-NATIVE) IN IOS
- IS CHANGING THE TABLE HEIGHT BY CHANGING ITS CONTRAINS GOOD PRACTICE? IN IOS
- HOW CAN I LOCALISE MY MULTIPLE STRING IN SWIFT? IN IOS
- VALUE OF TYPE 'ANY' HAS NO MEMBER 'TITLE' IN IOS
- HOW TO ALIGN ROW OF IMAGES AT THE CENTER TOP OF THE SCREEN IN IOS
- MEMBER 'BOLD()' EXPECTS ARGUMENT OF TYPE 'FONT' IN IOS
- FSCALENDAR SWIFT ISSUE WITH ONE WEEK VIEW IN IOS
- OPEN URL IN SAME TAB IF WINDOW.OPEN NOT WORKING IN IOS IN IOS
- FASTLANE: HOW TO LOAD .ENV FILE FROM PARENT DIRECTORY ACCORDING TO --ENV IN IOS
- WHEN/WHERE IS FLUTTER'S MAIN() METHOD CALLED FROM THE ANDROID AND IOS SIDE OF THINGS? IN IOS
- HOW CAN A CUSTOM UITEXTVIEW SUPPORT 2 DELEGATES - BOTH INTERNAL DELEGATE AND EXTERNAL DELEGATE? IN IOS
- HOW TO PASS DATA BETWEEN COLLECTION VIEWS SWIFT IN IOS
- HOW TO SUBCLASS UISCROLLVIEW OF WKWEBVIEW IN SWIFT IN IOS
- IOS FIREBASE PUSH NOTIFICATION - TOKEN RECEIVED BUT PUSH NOT WORKING IN IOS
- HOW CAN I REINITIALIZE A UITABLEVIEWCELL IN SWIFT? IN IOS
- CAN I WRITE A REACT NATIVE APP WITHOUT A MAC? IN IOS
- HOW TO DRAW SPECIFIC PART OF TEXTURE IN FRAGMENT SHADER (SPRITEKIT) IN IOS
- FIREBASE HAS NOT BEEN CORRECTLY INITIALIZED AND THE "GOOGLESERVICE-INFO.PLIST" FILE IN THE REQUIRED FOLDER IN IOS
- UPDATING FLUTTER APPLICATION TO ALREADY PUBLISHED NATIVE APPLICATIONS ON STORE IN IOS
- UNDERSTANDING WHY ASSIGN IS BREAKING CODE IN SWIFT IN IOS
- HOW DO I CREATE AN ARRAY OF OBJECTS AS AN ENVIRONMENT OBJECT IN SWIFTUI (SWIFT) IN IOS
- HOW TO FIX -- IPHONEOS_DEPLOYMENT_TARGET IS SET TO 8.0 WHEN PERMISSION HANDLER ALREADY IN MY PODFILE? IN IOS
- REACT-NATIVE-VIDEO MUTES THE MICROPHONE IN IOS
- WHAT IS WRONG WITH THIS URL FOR AVAUDIOPLAYER IN SWIFT? IN IOS
- WEATHER ICON NOT DISPLAYING IN IMAGEVIEW IN WEATHER PP IN IOS
- HOW TO CALL AN API IN APPLICATIONWILLTERMINATE( ) AND GET SOME TIME FOR RESPONSE FROM THE SERVER IN IOS
- NAVIGATION IN MVVM ARCHITECTURE IN IOS
- SWIFT: UPDATE TABLEVIEW DATA IN PAGEVIEW USING SLIDER IN IOS
- IS THERE A DIRECT LINK TO AN APPSTORE SEARCH RESULT ON IOS? IN IOS
- DO I NEED TO CREATE RES FOLDER MANUALLY IN REACT-NATIVE? IN IOS
- UIVIEW MASK TRIANGLE IN IOS
- READING A TEXT FILE AND RETURNING A ARRAY OF DICTIONARY IN SWIFT IN IOS
- RESIZE UIIMAGE BEFORE PRINTING TO PDF WITH PDFKIT – SWIFT/XCODE IN IOS
- COLLECTIONVIEW "FATAL ERROR: UNEXPECTEDLY FOUND NIL WHILE IMPLICITLY UNWRAPPING AN OPTIONAL VALUE" IN IOS
- HOW CAN I MAKE MULTIPLE CALLS OF NSBATCHUPDATEREQUEST WITHIN DB TRANSACTION SO THAT EITHER ALL ROWS IS UPDATED OR NONE IS UPDATED? IN IOS
- IS THERE ANY WAY TO BUILD IOS 15 APPS WITH XCODE 12.X? IN IOS
- IS IT FINE TO HAVE MULTIPLE BUNDLE IDS FOR A SINGLE FLUTTER APP IN IOS
- SWIFT ON IOS: TASK ON GLOBAL QUEUE ADDS 2ND TASK TO MAIN QUEUE TO DISPLAY UIIMAGEVIEW, WHICH DOES NOT DISPLAY IN IOS
- MY REACT APP SHOWS A BLANK PAGE AT ONE OF THE STAGES ON IPHONE. ANYWHERE ELSE (EVEN SAFARI ON MACOS), IT WORKS AS INTENDED IN IOS
- FLOW FOR SETTING UP A SOCIAL COMPONENT IN AN APP USING 100% CLOUDKIT AND SWIFTUI? IN IOS
- HOW DO YOU RESIZE A UIVIEW TO FIT ITS CONTENTS? IN IOS
- WHY ISN'T ONE OF THE ANIMATIONS ACTIVE? IN IOS