-
-
Save maxxfrazer/4e5c2587b44495067e5fd943e48e5466 to your computer and use it in GitHub Desktop.
Creating the form for Agora Audio Broadcasting example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ViewController: UIView { | |
/* | |
Implementation of the form | |
*/ | |
lazy var channelField: UITextField = { | |
let tf = UITextField() | |
tf.placeholder = "channel-name" | |
tf.borderStyle = .roundedRect | |
return tf | |
}() | |
lazy var usernameField: UITextField = { | |
let tf = UITextField() | |
tf.placeholder = "username" | |
tf.borderStyle = .roundedRect | |
tf.textContentType = .username | |
return tf | |
}() | |
let segmentItems = ["audience", "broadcaster"] | |
lazy var toggleRole: UISegmentedControl = { | |
let seg = UISegmentedControl(items: self.segmentItems) | |
seg.selectedSegmentIndex = 0 | |
return seg | |
}() | |
lazy var submitButton: UIButton = { | |
let btn = UIButton(type: .roundedRect) | |
btn.setTitle("Join", for: .normal) | |
btn.addTarget(self, action: #selector(joinChannel), for: .touchUpInside) | |
return btn | |
}() | |
func placeFields() { | |
[self.channelField, self.usernameField, self.toggleRole, self.submitButton] | |
.enumerated().forEach { (idx, field) in | |
self.view.addSubview(field) | |
field.frame = CGRect( | |
origin: CGPoint( | |
x: 25, | |
y: Int(self.view.safeAreaInsets.top) + 50 + idx * 55), | |
size: CGSize(width: self.view.bounds.width - 50, height: 50) | |
) | |
field.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin] | |
} | |
} | |
@objc func joinChannel() { | |
let channel = self.channelField.text ?? "" | |
let username = self.usernameField.text ?? "" | |
let role: AgoraClientRole = self.toggleRole.selectedSegmentIndex == 0 ? .audience : .broadcaster | |
if channel.isEmpty || username.isEmpty { | |
// Either channel or username fields are empty. | |
return | |
} | |
// AgoraAudioViewController is implemented in another file | |
let agoraAVC = AgoraAudioViewController( | |
appId: ViewController.appID, token: nil, channel: channel, | |
username: username, role: role | |
) | |
self.present(agoraAVC, animated: true) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment